분류 전체보기
[멘토링] 코딩테스트 합격 전략 계획하기
코딩테스트는 개발자로 취업하기 위해서 필수이자 매우 중요한 응시자격이다. 코딩테스트를 보는 이유는 명확하다. - 응시자 수 줄이기 - 기술역량 + 문제해결 능력 + 코드 구현 능력 = 모두 확인해보고자 함 >> 이러한 부분때문에 코딩테스트 없이 개발자로 취업하기란 쉽지 않다. 만약 그렇다하더라도 현저히 입사기회는 적어지게 된다. 주요 기업들의 코딩테스트 응시 방법이다. 기업 문제풀이시간 총 문제 합격기준 요구 기술 역량 응시방법 삼성전자 3시간 2문제 1문제 완전탐색 구현 DFS BFS 시뮬레이션 오프라인 카카오 5시간 7문제 3~4문제 그리디 구현 문자열 자료구조 온-오프라인 라인 2시간 5문제 2~3문제 그리디 구현 문자열 탐색 다이나믹 프로그래밍 온라인 Q. 시간은 부족한데 알고리즘을 속성으로 공부..
[백준] '피보나치 수 5' - Java
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 피보나치 수의 개념을 알고 코드로 구현하는 문제였다. 앞선 두 수와 합해지는 수, 총 3개의 변수로 나누어 구현해보았다. Answer 1) int i = 0; int k = 1; int r = i + k; int cnt = 0;..
[백준] '팩토리얼' - Java
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 수학적 개념인 팩토리얼을 코드로 구현하는 문제였다. Answer 1) for(int i = N; i >= 1; i--) { result *= i; } 1부터 곱해가며 N까지 누적곱해도되지만, 여기서는 N부터 1까지 1씩 감소시키며 result에 누적곱해주었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer..
[백준] '좌표 압축' - Java
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 랭킹 알고리즘과 유사하다. 1. 낮은 값이 높은 순위를 갖는다. (가장 높은 순위는 0순위다.) 2. 중복되는 원소는 같은 순위를 갖는다. 3. 낮은 값이 높은 순위를 갖는다는 것, 결국 순위를 정한다는 것은 오름차순으로 '정렬'을 했을 때 첫 번째 인덱스에 있는 원소가 가장 높은 순위를 갖고, 반대로 가장 마지막에 있는 원소가 가장 낮은 순위를 갖는다는 것을 의미 4. 여기서 우리는 순위를 매겨야..
[백준] '좌표 정렬하기' - Java
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 1) 모든 원소들을 좌표별로 x를 오름차순 정렬하고, x가 같다면 y를 오름차순 정렬하라 2) 두 좌표를 모두 입력받았다고 가정해보자. 그리고 arr[i][0] 와 arr[i+1][0] 을 정렬할 것이고 만약 두 값이 같다면 arr[i][1] 과 arr[i+1][1] 을 비교할 것 >> 람다활용과 함께 Comparator를 오버라이딩하여 작성 첫번째 정렬 기준은 x좌표의 오름차순이고, x좌표가 같을 경우에는 y좌표의 오름차순 정렬을 해야한다. Answer 1) Arrays.sort(arr, (e1, e2) -> { if(e1[0] == e2[0])..