알고리즘(36)
-
[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 -
[2020-11-18] 정수 제곱근 판별도움말
푼 시간 : 30분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr 문제를 풀때 Math를 쓰기 싫어서 최대한 고민을 했었다. 그치만 제곱근을 찾을 방법이면서, 가장 빠른 방법은 sqrt를 쓰는 방법 밖에 없는 것 같아 썼다. 있을지는 모르겠지만 다음에는 안 쓰고 풀 수 있을만한 방법을 찾고싶다. class Solution { public long solution(long n) ..
2020.11.18 -
[2020-11-17] 정수 내림차순으로 배치하기
푼 시간 : 30분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr 역정렬을 하는데 long형이라서 형변환을 하고 Math.pow가 double이었기에 cnt도 형변환을 해야 해서 할것이 매우 많은 문제였다. 요새 문자나 숫자 정렬하는 문제를 많이 푸는 것 같다 ㅎㅎㅎ import java.util.*; class Solution { public long sol..
2020.11.17