결국 이 책을 구입했다. 앞부분을 조금 읽어 봤다. 초반부터 1~n까지의 자연수 합을 구하는 공식인 n(n+1) / 2를 n(n-1) / 2로 적은 치명적인 오타가 있다. 다만 전반적으로 내용은 괜찮아 보인다.
시간 복잡도 부분을 읽다 보니 문제에서의 범위 제한사항은 대략적인 실행시간을 계산하기 위해 있는 것 같다. 물론 for 반복문처럼 반복의 범위를 반드시 정해줘야 하는 경우에도 필요할 때가 있을 것이다. 어쨌든 코드 작성 과정에서 직접 제한하는 작업은 불필요해 보인다.
책의 예제는 Lv.2 문제부터 시작한다. 책을 읽으려면 빨리 Lv.0도 끝내고 Java도 진도를 빨리 끝내야겠다. 시간이 너무 부족하다. 블로그를 하는 것도 원인에 크게 한 몫한다ㅠㅠ 생각보다 시간이 많이 들어간다. 그래도 시작했으니 하는 데까지는 포스팅을 해 볼 생각이다.
최빈값 구하기
지금의 나에게는 푸는 게 불가능해 보인다. 내가 지금까지 공부한 것들로는 방법이 생각나지 않는다. 정답률도 Lv.0 중에서는 상당히 하위권에 위치해 있다. 나중에 풀기로 했다.
짝수는 싫어요
n 이하의 홀수를 배열하는 문제다.
내가 한 설계는
1. n이 짝수일 때는 n / 2, 홀수일 때는 n / 2 + 1 로 서로 다른 answer 배열의 길이를 정해준다.
2. answer[0]에는 1을 대입한다.
3. answer[1]부터는 for 반복문을 이용해 answer[i]의 값을 2 * i + 1 로 넣어준다.
이다.
깔끔하게 실패했다. if와 else는 완전히 배타적이기 때문에 answer를 각각 선언해도 되는 줄 알았다.
선언문은 무조건 하나만 있어야 하나 보다.
Stream을 이용한 풀이다. 아직 공부 안 한 부분이다.
피자 나눠 먹기 (1)
아주 쉬운 문제다. 사람 수가 총 피자 조각과 같거나 더 적으면 된다. 개인적으로 같은 Lv.0에서도 난이도가 너무 들쭉날쭉하는 것 같다. 난이도 순으로 배치가 되었으면 더 좋았을 듯하다. 내일부터는 프로그래머스에서 설정한 순서 대신 정답률 높은 순으로 풀어 볼까 생각 중이다.
사람 수를 7로 나눈 나머지가 0일 때와 0이 아닐 때로 나눠 풀었다.
아주 짧은 solution이라 인기가 많다. 정수 간의 나눗셈은 반올림을 하지 않고 소수점 이하가 그대로 삭제되는 것을 이용한 풀이다.
피자 나눠 먹기 (2)
앞의 문제보다는 난이도가 있다. 나는 피자 수를 1부터 시작해, 총 피자 조각 수를 사람 수로 나눠 나머지가 0이면 바로 return하도록 설계했다.
조건에 해당하지 않을 때의 return값이 없어 에러가 난 모습이다. answer 값은 무조건 조건에 들어가기 때문에 될 거라고 생각했는데 안 된다.
break로 빠져나와서 return하는 방법을 선택했다.
조건문 밖에 return문을 추가로 배치해도 역시 작동한다. 다만 이 구조에서 if문은 무조건 작동하기 때문에, 항상 if문 안에서 즉시 return하고 종료하게 된다. 즉 마지막 return문은 에러를 막기 위한 용도 이외의 존재 이유가 없다.
자세히 보지는 않았으나 변수명이 GCD와 LCM인 것을 보니 최대공약수와 최소공배수를 이용해 푼 모양이다. 체계적인 풀이로 보인다.
피자 나눠 먹기 (3)
이번 문제는 피자 나눠 먹기 (1) 과 비슷한 것인데 (2) 와 비슷한 것으로 착각했다. 그래서...
2번처럼 나머지가 0일 때 바로 return하도록 만들었다. 항상 문제를 잘 읽어야 하는데 마음이 너무 급한가 보다.
피자 나눠 먹기 (1)과 다른 방식으로 풀었다. 단순히 총 피자 조각 수가 사람 수보다 같거나 많으면 바로 return하는 방식이다.
전에 보았던 삼항연산자를 이용한 풀이다. 나도 이제 이 연산자를 쓸 줄 알지만 익숙하지 않아서인지 안 쓰게 된다. 나는 for 반복문을 좋아해서 그런지 사용 빈도가 높아도 너무 높다. 다양하게 쓰도록 연습해야겠다.
배열의 평균값
Java로 점수 분석 프로그램을 만들 때 사용했던 배열의 평균값 구하는 문제다. Lv.0에서 나왔던 배열 문제 중 가장 쉬운 문제로 보인다.
라고 말하고 바로 for 반복문을 쓴다. for를 사랑하는 마음이 너무 크다.
'Coding Test' 카테고리의 다른 글
Java 코딩테스트 연습 5일차(2) (프로그래머스 스쿨 Lv.0, 1061점) (2) | 2023.03.11 |
---|---|
Java 코딩테스트 연습 5일차(1) (프로그래머스 스쿨 Lv.0, 1055점) (0) | 2023.03.11 |
Java 코딩테스트 연습 3일차 (프로그래머스 스쿨 Lv.0, 1037점) (2) | 2023.03.09 |
Java 코딩테스트 연습 2일차 (프로그래머스 스쿨 Lv.0, 1019점) (0) | 2023.03.08 |
Java 코딩테스트 연습 1일차 (프로그래머스 스쿨 Lv.0, 1013점) (0) | 2023.03.07 |