프로그래머스 34

[2021-05-25] 약수의 개수와 덧셈

푼 시간 : 40분 언어 : 자바 https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 재귀함수로 풀다보니 시간이 오래걸렸다 지저분한데 급해서 그냥 풀었다. 막상 남들 푼걸 보니 재귀가 없어도 되는 문제였다... 너무 어렵게 생각하려는 습관이 문제인 것 같다. 후배들 보면서도 하는 생각인데 나도 결국 똑같이 어렵게 연산하는길을 택하는경우가 많은 것 같다.. cla..

코딩테스트 2021.05.25

[2021-05-05] 소수 찾기

푼 시간 : 30분 언어 : 자바 전에 에라토스테네스의 체 로 풀어야만 한다는 글을 보고 안 풀어놓고 까먹었는데, 오늘 다시 보게 됐다.. 이해가 안된다면 알고리즘 항목에 있는 에라토스 테네스의 체를 보면 금방 이해가 되실 것 같다. import java.util.*; class Solution { public int solution(int n) { int answer = 0; int[] filter = new int[n + 1]; Arrays.fill(filter, 1); // 필터에 1을 채운다. filter[0] = 0; filter[1] = 0; // 0과 1은 소수가 아님을 미리 필터링 한다. for (int i = 2; i < Math.sqrt(n) + 1; i++){ // 제곱근+1의 범위 ..

코딩테스트 2021.05.05

[2021-05-03] 음양 더하기

푼 시간 : 10분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/76501?language=java 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 문제가 쉬운데에 비해 푼 사람 수가 적었다. 정말 쉽다. class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for(int i=0; i

코딩테스트 2021.05.03

[2021-05-01] 모의고사

푼 시간 : 2시간 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 완전 탐색이라는 풀이법을 알고는 있었지만 완전탐색의 기법에 있는 알고리즘에 기반해서 풀었는지는 잘 모르겠다. 이렇게까지 시간이 오래 걸릴줄은 몰랐다. 처음으로 그림을 그려가면서 푼 문제였다. 머릿속에만 그리기에는 너무 복잡했기때문에, 그림을 그려가면서 푸는 수가 제일 좋은 것 같았다. 좋은 방향으로 작용 했던 것 같다. 변수를 너무 많이 만들..

코딩테스트 2021.05.01

[2021-04-29] K번째 수

푼 시간 : 30분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 이 쉬운걸 왜 아직도 풀지 못했었는가 매번 풀때마다 이상하게 돌아돌아 가는 습관이 있었던 것 같다. 요새는 귀찮음?이 생각을 바꾼다고 코드를 점점 짧게 하려다 보니 전에는 1시간을 들여다봐도 안됐던것이 10분만에 풀고 ( 오랜만에 봐서 기억이 안나던 것들 때문에 ) 20분을 더 소비했다 import java.util.*; class Solution { public int[] solution(int[] arra..

코딩테스트 2021.04.29

[2020-12-01] 하샤드 수

푼 시간 : 20분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 하샤드 수 라는 말을 처음 들었는데 count를 안쓰고 어떻게든 만들어 보려고 했으나.. 결국엔 만들게 되었다. 코드를 짧게 줄이고싶다. class Solution { public boolean solution(int x) { boolean answer = true; int temp=0; int count=(int)..

코딩테스트 2020.12.01

[2020-11-26] 콜라츠 추측

푼 시간 : 40분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr 동적 계획법을 이해하기 위해 문제를 재귀적으로 풀어보았다. 나름 시간을 많이 잡아먹을 것으로 예상했으나 오히려 재귀적 표현에서 막힌것이 아니라 answer++을 해주어 막혔다.. 혼자서 10분정도 왜 answer에 값이 추가가 안되는지 계속 고민하다가 생각해보니 호출을 하면서 불러야 하는데 호출을 하고나서 부르자..

코딩테스트 2020.11.26

[2020-11-20] 최대공약수와 최소공배수

푼 시간 : 40분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 도저히 어떻게 하는지 몰라서 고민하다가 인터넷에 유클리드 호제법을 검색해 봐서 풀었다. 최소 공배수와 최대 공약수를 구하는 방법이 너무 많기때문에 if문을 도배 할 수 없고, 유클리드 호제법을 쓸 수밖에 없었다. 처음 보자마자 재귀함수를 써야 한다고 느꼈으나, 도저히 어떤방식으로 써야할지 감이 안잡혔었다. 천천..

코딩테스트 2020.11.20

[2020-11-19] 짝수와 홀수

푼 시간 : 5분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12937 코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 Odd 4 Even programmers.co.kr 코드를 짧고 간결하게 짜고싶어 삼항연산자를 써봤다. 삼항연산자는 (boolean) ? c(true일경우) : d(false일경우) true일경우 c를 return, false일 경우 d를 return한다. class Solution { public String solution(int num) ..

코딩테스트 2020.11.19

[2020-11-19] 제일 작은 수 제거하기

푼 시간 : 1시간 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 처음엔 문제가 풀리지 않아 굉장히 당황했었다. 조건중에 보면, 작은 수를 찾으라고 나와 있는데 정렬을 하고나서 내림차순으로 넣어서 해결을 했더니 오류가 나는것 이었다. 작은수 한개만 찾으라는게 아닌가? 싶어 한가지만이 아닌 여러가지를 넣을 수 있도록 추가했었다. 풀리지않자 보던 중 조건에 정렬을..

코딩테스트 2020.11.19