본문 바로가기

코딩테스트

(10)
[Java][프로그래머스-코딩테스트 level2] 피보나치 수 o 요구사항 2이상의 수 n이 입력되었을 때, n번째 피보나치 수를 1234567로 나눈 나머지를 리턴하기 o 코드진행 1. n번째 피보나치 수 계산하기 피보나치 수는 재귀함수를 사용하면 간단하게 구현할 수 있다. 하지만 그 효율성은 매우 떨어진다. 때문에 문제에서 주어지는 100000이하의 자연수 n번째 피보나치 수를 구하는데는 시간이 많이 소요될 뿐더러 재귀함수가 재귀함수를 끝없이 호출하는 식으로 되어 메모리가 버티질 못한다 for 문을 사용하면 재귀함수 보다 효율적인 함수를 생성할 수 있다. 2. 1234567로 나눈 나머지 계산하기 문제에서 1234567로 나눈 나머지를 리턴하도록 하였으므로 큰 숫자를 계산할 필요가 없다. 임의의 숫자 Number를 K로 나눈 나머지는, Number를 더해서 구성..
[Java][프로그래머스-코딩테스트 level1] 3진법 뒤집기 o 요구사항 자연수 -> 3진법 변환 -> 앞뒤 순서 변환 -> 10진법 변환하여 리턴(int) o 코드설계 1. N진법 변환하기 임의의 수 Number를 N진법으로 변환한 수는 Number가 0이 될 때까지 Number를 N으로 나눈 나머지를 각 자릿값으로 나타낸 값과 같다. 이때 나머지는 마지막에 나온 나머지를 첫숫자로 해서 거꾸로 읽어나간다 2. N진법 숫자 10진법 계산하기 N진법 숫자 Number는 뒤에서부터 N의 0제곱, N의 1제곱... 이런 식으로 진행된다 Number가 위치하는 자릿값과 자릿수를 곱하고 모두 더하면 10진법으로 변환된다 o 완성코드 import java.util.ArrayList; import java.util.List; class Solution { public int ..
[Java][프로그래머스-코딩테스트 level1] 약수의 개수와 덧셈 o 요구사항 left ~ rigtht까지 각각 주어진 숫자의 약수의 개수를 구하고 홀짝을 판별한다 o 코드진행 1. 약수의 개수 구하기 2. 홀짝 여부 판별 3. 약수가 짝수이면 더하고, 홀수라면 뺀 값을 리턴 o 코드설계 1. 약수 개수 구하기 N의 약수는 자기자신 N을 제외하고는 N/2 보다 클 수 없다 예를 들어 12의 약수는 12를 제외하고는 7이상이 될 수 없다 이를 이용해 메소드 생성 2. 홀짝 여부 2로 나누어 나머지가 1이면 홀수 0이면 짝수 o 완성코드 class Solution { public int solution(int left, int right) { int answer = 0; for(int i=left; i
[Java][프로그래머스-코딩테스트 level1] 로또의 최고 순위와 최저 순위 o 요구사항 두 int형 배열 lottos, win_nums 을 매개값으로 받아 가능한 순위 --> b 일치하는 개수 만큼 순위가 올라간다 단 알아볼 수 없는 번호인 0의 개수 만큼 올라갈 수 있는 순위 --> a 정수형 배열 [a, b] 반환하기 o 코드진행 다른 방법들도 많지만 해당 문제는 import 없이 배열만 사용하였다. 필요한 메소드를 생성하여 인자값과 반환값 단계별로 넣는 방식으로 풀이하였다. o 코드설계 1. 배열의 요소를 크기별로 정렬하여 배열을 리턴하는 메소드 2. 두 배열 값 비교하여 일치하는 값 반환하는 메소드 3. 배열의 요소 중 0이 포함된 개수를 반환하는 메소드 4. 로또 맞은 개수를 인자값으로 순위를 반환하는 메소드 5. 현재 순위와 0개수를 인자값으로 받아 가능한 순위를 반..