본문 바로가기

알고리즘/알고리즘 설명61

[Java] 문제풀이 (Programmers) Java 문제풀이 (Programmers) 나머지가 1이 되는 수 찾기 가장 작은 수를 찾는 것이니깐, 1부터 시작해서 1씩 더하면서 n 과 나누면 된다 거기서 나머지가 1이 나오는 첫 번째 x 가 답이 되는 것이다 class Solution { public int solution(int n) { int answer = 0; int x = 1; while (n % x != 1) { x += 1; } answer = x; return answer; } } 없는 숫자 더하기 check(int value, int[] numbers) 0부터 9를 value로 받고, 배열 안에 있는지 확인을 한다 있으면 true를, 없으면 false를 반환한다 false이면 answer에 더해주면 된다 class Solution.. 2023. 5. 30.
[Java] 문제풀이 (Programmers) Java 문제풀이 (Programmers) 삼총사 수열을 잘 만들면 된다 삼총사를 구하면 되기 때문에, 3중 for문을 이용하면 된다 class Solution { public int solution(int[] number) { int answer = 0; for (int i = 0; i < number.length - 2; i ++) { for (int j = i + 1; j < number.length - 1; j ++) { for(int k = j + 1; k < number.length; k ++) { if (number[i] + number[j] + number[k] == 0) { answer += 1; } } } } return answer; } } 나머지 구하기 연산자 % 를 사용하여, 나머.. 2023. 5. 28.
그래프 탐색 🧑‍💻 그래프 탐색 멀티잇 코딩테스트 러닝클래스'Python 5월반 구름이의 여행 연결되어 있는 섬들을 K개 이하로 갈 수 있는지 확인하는 것 BFS를 이용하여, 최단 거리 구하기를 하였다 1번부터 N번 섬까지 못 갈 수도 있음 그러기 위해 flag를 이용하여, 못 가면 False 즉 NO 를 출력하도록 유도 N번 섬에 도착하면 answer에다가 몇 번을 움직였는지 저장을 한 후, K번 이하인지 구별하기 from collections import deque N, M, K = map(int, input().split()) island = [[] for _ in range(N + 1)] visited = [False] * (N + 1) queue = deque([]) answer, flag = 0, Fals.. 2023. 5. 25.
다이나믹 프로그래밍 🧑‍💻 다이나믹 프로그래밍 멀티잇 코딩테스트 러닝클래스'Python 5월반 미리 저장된 값을 어떻게 활용할 수 있을지 생각을 한다 피보나치 수 같은 경우, 1번째와 2번째를 미리 구하고, 그 앞 두 숫자를 이용하여 값을 구하는 것이다 피보나치 수 재귀로 풀이 (Runtime Error) user_input = int(input()) def fibo(num): if num == 0: return 0 elif num == 1: return 1 return fibo(num - 2) + fibo(num - 1) print(fibo(user_input) % 1000000007) 리스트로 풀이 user_input = int(input()) fibo = [1, 1] for i in range(2, user_input.. 2023. 5. 24.
그리디 알고리즘, 원인과 결과 찾기 🧑‍💻 그리디 알고리즘, 원인과 결과 찾기 멀티잇 코딩테스트 러닝클래스'Python 5월반 거스름돈 1, 5, 10, 20, 40 원이라는 동전이 있다 N원을 거슬러 주기 위한 최소의 동전의 개수를 구하는 것 기본적으로 40부터 시작해서, 남은 나머지를 계산해주면 된다 N = int(input()) coin = [40, 20, 10, 5, 1] count = 0 for c in coin: if c temp_end: count += 1 temp_end = end print(count) 2023. 5. 23.
기초 자료구조의 구현과 응용 🧑‍💻 기초 자료구조의 구현과 응용 멀티잇 코딩테스트 러닝클래스'Python 5월반 Stack 말 그대로 stack을 구현하면 된다 stack은 Last In First Out 규칙을 가지고 있다 stack에 들어갈 수 있는 용량이 정해졌다 stack이 이미 꽉 찼을 때에, 값을 넣어야 하면, "Overflow"를 출력 stack에 아무것도 없는데, 값을 빼야 하는 명령어가 실행되면, "Underflow"를 출력한다 N, K = map(int, input().split()) stack = [] for _ in range(N): command = list(input().split()) if command[0] == "push": if len(stack) < K: stack.append(int(command.. 2023. 5. 22.
완전 탐색 🧑‍💻 완전 탐색 멀티잇 코딩테스트 러닝클래스'Python 5월반 제곱 암호 암호를 풀어내는 문제 알파벳, 숫자 순서로 짝을 이뤄서 입력이 주어진다 숫자를 제곱하고, 앞에 알파벳을 제곱번째의 알파벳을 출력하는 것이다 ord와 chr를 사용했다 알파벳을 숫자로 반환하기 위해서 ord를 사용 소문자 같은 경우 a = 97 ~ z = 122 122를 넘어갈 경우를 대비해서 (int(code[i]) ** 2) % 26 를 해주었다 그리고 한번 더 122를 넘어가면 26을 뺐다 마지막으로 숫자를 문자로 반환하기 위해 chr를 사용 N = int(input()) code = list(input()) answer = '' for i in range(N): if i % 2 == 0: temp = code[i] else.. 2023. 5. 11.
시뮬레이션과 창의적 해결 🧑‍💻 시뮬레이션과 창의적 해결 멀티잇 코딩테스트 러닝클래스'Python 5월반 0 커플 숫자로 된 리스트가 주어진다 리스트 안에 숫자의 개수는 짝수이다 음수와 양수가 들어가 있고, 둘의 합이 0이면 커플이다 그 중 합하면 0이 아닌 숫자를 구해야 한다 딕셔너리로 먼저 해결을 했다 key 로는 숫자의 절대값을 넣었고, value에다가 원래 값을 넣었다 만약 절대값이 같으면 value에 값끼리 더했다 (같은 절대값이 나오면, value는 0이 된다) 그리고 마지막에 모든 value 들을 더했다 짝이 없으면, value는 0이 아니라, 다른 숫자일 것 N = int(input()) score = list(map(int, input().split())) temp_dict = {} for s in score: .. 2023. 5. 9.
기초 수학과 구현 🧑‍💻 기초 수학과 구현 멀티잇 코딩테스트 러닝클래스&#39;Python 5월반 최장 맨해튼 거리 |x1 - x2| + |y1 - y2| 의 값이 최장 맨해튼 거리다 (x1, y1) , (x2, y2) 4개의 숫자가 주어지는데, 그 숫자로 만들 수 있는 제일 긴 맨해튼 거리를 만드는 것이다 permutations을 사용하여 주어진 4개의 숫자로 만들 수 있는 수열을 모두 구한다 그리고 맨해튼 거리 공식을 이용하여, 최장 맨해튼 거리를 구하면 된다 from itertools import permutations numbers = list(map(int, input().split())) answer = 0 for i in permutations(numbers, len(numbers)): answer = max.. 2023. 5. 5.