이끌든지 따르든지 비키든지

분류 전체보기 67

[프로그래머스] 금과 은 운반하기 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 금과 은 운반하기 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/86053 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 각 도시에 대해 금과 은을 운반할 수 있는 최적의 경로를 선택 선택된 경로에서 건설 장소로 이동하고, 금과 은을 운반하며 최소 시간을 계산 이진 탐색으로 각 도시에 대해 최소 시간을 계산하고, 그중 최소 시간을 반환 코드 풀이 매개변수(Parameter) 설명 a : 건설할 도시에 전달해야 할 금의 무게 b..

[알고리즘] 이진 탐색(Binary Search)

이진 탐색(Binary Search)이란? 우리가 종종 하는 업다운(Up & Down) 게임과 매우 유사한 검색 알고리즘이다. 리스트의 중간값을 선택해, 그 값이 목푯값인지, 아니면 앞에 있는지, 뒤에 있는지를 판단하고 목푯값을 찾을 때까지 이를 반복하는 알고리즘이다. 이진 탐색의 장 · 단점 매 탐색마다 범위의 절반을 덜어낼 수 있어 속도가 빠르고, 알고리즘의 구현도 비교적 간편하다. 다만, 특성상 정렬된 데이터에만 적용할 수 있기 때문에 정렬 작업이 선행되어야 한다.

[프로그래머스] 문자열 밀기 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 문자열 밀기 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/120921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 방법 1 public int solution(String A, String B) { return (B + B).indexOf(A); } 문자열 B를 2번 반복해 이어 붙인 다음 문자열 A가 나타나는 위치(인덱스를) 찾는다. 끝까지 밀어도 A를 찾을 수 없다면 -1, 같다면 0을 반환하므로 다른 조건도 완벽히 만족 방법 2..

[프로그래머스] 연속된 수의 합 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 연속된 수의 합 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/120923 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 쓴 코드 public int[] solution(int num, int total) { int startValue = (total / num) - ((num - 1) / 2); int[] result = new int[num]; for (int i = 0; i < num; i++) { result[i] = sta..

[프로그래머스] 하샤드 수 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 하샤드 수 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 입력된 값(x)의 자릿수 합(sum)을 구한다. 입력된 값(x) % 자릿수 합(sum) == 0에 대한 결과를 boolean 타입으로 반환한다. 내가 작성한 코드 public boolean solution(int x) { int sum = 0; int origin = x; //자릿수의 합 계산하기 while (x >..

[프로그래머스] 기능 개발 문제 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 기능 개발 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 이 문제는 각 기능이 배포될 때마다 몇 개의 기능이 배포되는지를 구하는 문제이다. 각 기능별 작업 진도와 작업 속도를 이용하여 배포일을 계산하고, 배포일에 배포되는 기능 수를 구하면 된다. 기능별별 배포일 계산 작업 진도(progress)와 작업 속도(speed)를 이용하여 각 기능의 배포일을 계산 배포일 = (1..

[Node.js] Node.js 서버에서 AWS S3 이미지 가져오기

AWS S3 Storage에 저장된 이미지를 Node.js를 통해 가져오는 방법에 대해 알아본다. S3 Bucket 설정 우선, 이미지를 담을 S3 Bucket을 생성한다. 버킷 이름을 설정해주고, 퍼블릭 엑세스 차단 설정을 반드시 체크해주어야 Node.js 서버에서 S3 버킷에 접근할 수 있다. 버킷을 생성했다면, 버킷 속성 → 권한 → 버킷 정책 → 버킷 정책 편집 → 정책 생성기로 들어가 버킷 정책을 만들어준다. 입력해야하는 값 Type of Policy - S3 Bucket Policy Principal - * Actions - GetObject ARN - 버킷 정책 편집 페이지에서 볼 수 있음 전부 맞게 입력했다면, Add Statement → Generate Policy 버튼을 차례대로 눌러 ..

Project/Node.js 2023.09.20

[JavaScript] 자바스크립트의 비동기 처리

비동기(Asynchronous) 처리 자바스크립트는 단일 스레드 기반의 언어로, 한 번에 하나의 작업만 처리할 수 있다. 그러나 비동기 처리 방식을 사용해 코드를 순차적으로 실행하되, 실행 결과를 기다리지 않고 다음 코드를 실행한다. 그래서, 우리가 보기에 여러 작업이 동시에 실행되는 것처럼 보인다. 비동기 처리는 코드를 순차적으로 실행하지만, 실행 결과를 기다리지 않고 다음 코드를 실행한다. 이 때문에, 작업이 실행 중일 때 다른 작업을 수행할 수 있으며, 사용자의 요청에 빠르게 응답할 수 있다. 자바스크립트의 비동기 처리를 확인할 수 있는 간단한 예시를 보자면, console.log("Hello"); setTimeout(function() { // 1초 뒤에 실행 console.log("Dev"); ..

[JavaScript] const의 불변성

자바스크립트에서 const는 상수, 즉 불변형 변수를 선언할 때 사용한다. 자바의 final과 같은 역할을 하는 키워드인 셈인데, const로 선언된 객체를 Java에서 final로 선언된 객체와 같이 Read-Only라고 생각할 수 있지만, const로 선언된 객체의 속성은 변경할 수 있다. 그럼 Read-Only가 아니라는 건가? 예시 코드를 통해 알아보자면, const person = { name: 'John', age: 30 }; person.age = 31; console.log(person); // 출력: { name: 'John', age: 31 } 위 코드처럼, person의 속성인 age는 변경이 가능하다. const person = { name: 'John', age: 30 }; per..

[Node.js] Crypto 모듈로 비밀번호 암호화하기

웹 서비스를 운영하면 사용자 정보를 안전하게 저장하고 관리해야 한다.이를 위해 암호화하거나 해싱하는 등의 작업이 필요한데, Node.js 환경에서는 bcrypt, Scrypt, crypto 등의 모듈을 통해 이 작업을 수행할 수 있다. 이 중, crypto 모듈을 사용해 사용자의 정보(비밀번호)를 암호화하는 방법에 대해 알아본다.Crypto 모듈 설치npm install crypto위 명령어를 통해 crypto 모듈을 설치할 수 있다. package.json의 dependencies에도 자동으로 crypto가 추가된다.Typescript 환경에서 작업하는 경우에도 특별히 다른 모듈 설치 없이 사용할 수 있다.Crypto로 비밀번호 암호화하기 비밀번호 암호화는 위 그림의 순서대로 진행되는데, 그림에 설명을..

Project/Node.js 2023.09.14