본문 바로가기

Coding Test

(134)
[Java] 알고리즘 수업 - 피보나치 수 1 [24416번] https://www.acmicpc.net/problem/24416예제 입력15예제 출력15 3예제 입력230예제 출력2832040 28문제 접근재귀 호출 피보나치 수열과 동적 프로그래밍 피보나치 수열의 연산 횟수 계산문제 해결2개의 함수를 만들어서 각각 카운팅 값을 출력슈도 코드static recursionFiboCntstatic dpFiboCntN (피보나치 수열의 N번째 값)recursionFibo(N)dpFiboCnt(N)recursionFiboCnt 출력dpFiboCnt 출력recursionFibo(N){ if(N이 1 또는 2면) { 1 반환 recursionFiboCnt 1증가 } recursionFibo(N-1) + recursionFibo(N-2) 반환}dpFiboCnt(N){ f[N..
[Java] 칸토어 집합 [4779번] https://www.acmicpc.net/problem/4779예제 입력10132예제 출력1-- -- - - - - - - -- - - -문제 접근“-”를 3$^N$만큼 반복하여 문자열 생성문자열을 3등분하여 가운데 부분을 공백으로 변경각 선에 대해 2번을 반복하고 선의 길이가 1일 때 멈춤문제 해결각 재귀마다 총 길이 / 3을 한 값인 sublength 저장sublength ~ sublength * 2의 값을 공백으로 대체재귀함수(왼쪽) + 가운데 공백 만큼 공백 + 재귀함수(오른쪽) 반환슈도 코드while(입력이 없을 때까지 반복){ N(N 저장) str에 -를 3^N번 만큼 저장 res = recursion(str, 길이) res 출력}recursion(str, 전체길이)..
[Java] 재귀함수가 뭔가요? [17478번] https://www.acmicpc.net/problem/17478 예제 입력12예제 출력1어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다."재귀함수가 뭔가요?""잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."____"재귀함수가 뭔가요?"____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 ..
[Java] 반복 수열 [2231번] https://www.acmicpc.net/problem/2331예제 입력157 2 예제 출력14문제 접근처음 입력받은 수에서 각 자리마다 P제곱을 하여 모두 더함수열을 계속하여 진행하다보면 반복되는 수열이 등장반복되는 부분을 제외한 반복되지 않은 부분의 개수를 출력하는 문제문제 해결무한대로 저장할 ArrayList 한 개 생성반복된 수를 저장할 반복ArrayList 생성무한 반복 List에서 마지막 값을 뽑아 String으로 받고, 문자열의 길이 만큼 반복0~length-1번까지 charAt() - ‘0’을 하여 정숫값을 저장해당 정수값을 Math.pow() 함수로 P만큼 제곱한 값을 sum에 누적무한 반복 리스트에 포함이 된다면 반복 리스트에 저장단, 반복 리스트에도 포함이 된다면 이미 1번의 루프를..
[Java] 영식이의 손가락 [2740번] https://www.acmicpc.net/problem/1614예제 입력123예제 출력115예제 입력210예제 출력20예제 입력350예제 출력34예제 입력4248예제 출력4193예제 입력55973예제 출력57788 예제 입력6399999예제 출력6399998문제 접근패턴은 1 → 2 → 3 → 4 → 5 → 4 → 3 → 2로 반복다친 손가락이 패턴을 몇 번 반복할 수 있는 지 확인8 * 반복 가능한 패턴패턴은 온전히 반복하지 못할 때 1개씩 계산문제 해결다친 손가락으로 셀 수 있는 수는 10억이하로 int가 아닌 long 선언 필요패턴 배열 생성 [1, 2, 3, 4 ,5 ,4 ,3, 2]다친 손가락이 1패턴에 몇 번 등장하는 지 확인전체 패턴 = 다친 손가락 사용 가능 횟수 / 1패턴에 다친 손가락..
[Java] 방 번호 [2740번] https://www.acmicpc.net/problem/1475예제 입력19999예제 출력12예제 입력2122예제 출력22예제 입력312635예제 출력31 예제 입력4888888예제 출력46문제 접근한 세트 = 0 ~ 9번6번과 9번은 서로 바꿔 사용 가능방 번호는 100만 이하의 숫자 ⇒ 동일한 숫자로 나오면 999,999 같은 식으로 플라스틱 세트는 최대 6개문제 해결0 ~ 9번까지의 배열 생성Counting sort 하는 것처럼 입력받은 숫자를 각 방번호 index에 추가단, 6과 9일 경우 더한 뒤 /2 + %2를 한 값을 동일하게 저장6이 6개, 9가 0개일 경우 9로 대체하여 3개의 세트면 되기 때문배열에서 가장 숫자가 큰 것의 인덱스를 저장슈도 코드roomNumber (방 번호 문자열 저장..
[Java] 행렬 곱셈 [2740번] https://www.acmicpc.net/problem/2740 예제 입력13 21 23 45 62 3-1 -2 00 0 3 예제 출력1-1 -2 6-3 -6 12-5 -10 18문제 접근A[0][0] * B[0][0] + A[0][1] * B[1][0] = 1 * -1 + 2 * 0 = -1A[0][0] * B[0][1] + A[0][1] * B[1][1] = 1 * -2 + 2 * 0 = -2A[0][0] * B[0][2] + A[0][1] * B[1][2] = 1 * 0 + 2 * 3 = 6A[1][0] * B[0][0] + A[1][1] * B[1][0] = 3 * -1 + 4 * 0 = -3A[1][0] * B[0][1] + A[1][1] * B[1][1] = 3 * -2 + 4 * 0 = -..
[Java] 2차원 배열의 합 [2167번] https://www.acmicpc.net/problem/2167예제 입력12 31 2 48 16 3231 1 2 31 2 1 21 3 2 3예제 출력163236문제 접근첫째줄에는 2차원 배열의 크기가 주어짐 (N행 M열)둘째줄에는 2차원 배열의 값이 주어짐셋째줄에는 합을 구할 케이스가 주어짐넷째줄부터 누적 합을 할 좌표 가 주어짐[i , j] ~ [x, y]배열의 합이 2$^3$$^1$-1이하 이므로 int로 표현 가능문제 해결start X ~ end X, startY ~ endY 이중 반복문슈도 코드N(행 저장), M(열 저장)A[N+1][M+1] 배열 선언for(N번 반복){ for(M번 반복){ A 배열 초기화 }}K(케이스 개수 저장)for(K번 반복){ startX, startY, endX,..