돌아온 코테 공부 시간
혼자서 하려니 의욕이 나지 않더라구요
그래서 찾아보니 많은 분들이 책을 보면서 하고 계셨다.
서칭해서 가장 많이 나온 건 한빛 미디어의 이것이 시리즈 중
"이것이 취업을 위한 코딩 테스트다 with 파이썬" by 나동빈이었다.
일단 나는 자바로 하기로 결심했는데 얘는 파이썬이고...
게다가 전자책 따로 사기도 도서관에서 빌리기도 귀찮아서
밀리의 서재에 들어가서 검색해봤더니 책이 꽤나 많았다.
"코딩 테스트 합격자 되기 자바편" by 김희성을 골랐다.
심지어 프로그래머스에서 제공하는 97문제나 풀어볼 수 있음!
"코딩 테스트 합격자 되기 자바편"은
책 초반에 코테를 효율적으로 분석하는 법을 먼저 알려준다.
나는 N년 전에 코테 처음 시험 볼 때도 지금도... 냅다 풀었는데 그게 아니구나^^!
1. 문제를 쪼개서 분석하라
2. 제약사항을 파악하고 나만의 테스트케이스를 추가해라
3. 입력값을 분석하라
4. 의사코드로 설계하는 연습을 해라
5. 시간 복잡도도 고려해라
대충 위와 같은 내용들인데 괜찮은 것 같다.
그리고 나서 배열, 스택과 같이 자료구조 순서대로
개념과 정의, 알아야 할 내용 등을 설명해준다.
자료구조별로 몸풀기 문제가 있는데
풀면서 유의해야 할 점들 같은 내용들도 같이 소개해준다
그리고 그 다음이 합격자가 되는 모의 테스트라고 해서,
문제를 4-5개씩 풀어볼 수 있게 해두었더라.
내용도 구성도 괜찮다고 생각해
하루에 2-3개 정도를 풀면서
까먹은 자바도 상기하고
알고리즘도 익히고 문제도 풀 계획을 세웠다.
알다시피 그렇게 꾸준 인간은 아니고
작심삼일 n번 모으기와 벼락치기로 이루어진 인간이라...
하는데까지 해보겠다.
각설하고 오늘은
"코딩 테스트 합격자 되기 자바편" 도서 기준으로는 3번이고,
프로그래머스 기준으론 월간 코드 챌린지 시즌 1에 해당하는 문제
<두 개 뽑아서 더하기> 이다.
(문제 출처 : 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/68644?)
프로그래머스는 블로그 게재시 문제 여지가 있어
자세한 내용 없이 문제 제목과 링크로 대체합니다.
책에서는 문제풀이 권장 시간과 시간 복잡도도 알려준다.
이 문제는 권장 풀이 시간은 30분이고
시간 복잡도는 O(N^2 log(N^2)) 이다.
하지만 최대 데이터 개수가 100개라
시간 복잡도를 굳이 따지지 않아도 될 문제같다.
내 작성코드
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
// 그냥 Array는 개수를 지정해줘야 하는데
// 결과값이 몇 개가 나올지 모르니까
// 자바에서 크기가 동적으로 변경되는 ArrayList를 활용했다
ArrayList<Integer> sums = new ArrayList<>();
int x = 0;
// 두 수를 선택하는 모든 경우의 수를 반복해서
for (int i=0; i<numbers.length; i++){
for (int j=i+1; j<numbers.length; j++){
x = numbers[i]+numbers[j];
// 더한 결과가 중복 없이 1번만 저장되도록 비교
if (!sums.contains(x)){
sums.add(x);}
}
}
// ArrayList의 모든 데이터 정렬
Collections.sort(sums);
// int형 배열로 변경 후 반환한다
answer = sums.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
책은 중복값이 저장되지 않는 해시셋Hashset 으로 풀었더라
'공부 > 코딩' 카테고리의 다른 글
[프로그래머스/카카오2019] 실패율 (3) | 2025.01.04 |
---|---|
[프로그래머스/연습문제] 행렬의 곱셈 (5) | 2025.01.04 |
[프로그래머스/완전탐색] 모의고사 (4) | 2025.01.03 |
[프로그래머스/입문] 저주의 숫자 3 (0) | 2024.12.05 |
[프로그래머스/입문] 분수의 덧셈 (1) | 2024.12.04 |