파이썬 알고리즘 : 카펫

2024년 5월 20일 알고리즘 문제풀이 문제 카펫 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def solution(brown, yellow): answer = [] arr = [] # 가로길이와 세로길이에서 모두 2를 빼고 곱한 값이 노란색 카펫의 개수와 같아야 한다. for i in range(1, int((yellow)**0.5)+1): if not yellow % i: arr.append([i, yellow//i]) # 따라서 위에서 구한 값에 2를 더하면 카펫의 가로 길이와 세로 길이가 된다. # 모든 칸의 갯수를 구한 후 노란색 카펫의 갯수를 빼면 갈색 카펫의 갯수가 나온다. # 가로가 길어야 하므로 y, x 순으로 정렬한다. for x, y in arr: x += 2 y += 2 if x*y - yellow == brown: answer = [y, x] return answer

2024년 5월 20일 · 1 분 · 배준수

파이썬 알고리즘 : 모의고사

2024년 5월 17일 알고리즘 문제풀이 문제 모의고사 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 # 수포자 1이 찍은 답을 문제 번호로 찾기 def first_answer(idx): if (idx+1) % 5: return (idx+1) % 5 else: return 5 # 수포자 2가 찍은 답을 문제 번호로 찾기 def second_answer(idx): if not idx % 2: return 2 else: if idx % 8 == 1: return 1 elif idx % 8 == 3: return 3 elif idx % 8 == 5: return 4 else: return 5 # 수포자 3이 찍은 답을 문제 번호로 찾기 def third_answer(idx): idx %= 10 if idx < 2: return 3 elif idx < 4: return 1 elif idx < 6: return 2 elif idx < 8: return 4 else: return 5 def solution(answers): ans = [] # 맞춘 갯수를 담는 배열 arr = [0, 0, 0] # 채점 for idx in range(len(answers)): if answers[idx] == first_answer(idx): arr[0] += 1 if answers[idx] == second_answer(idx): arr[1] += 1 if answers[idx] == third_answer(idx): arr[2] += 1 # 가장 많이 맞춘 사람 찾기 max_val = max(arr) # 고득점자가 한 명일 경우 if len(set(arr)) == 3: ans.append(arr.index(max_val)+1) # 고득점자가 둘 이상일 경우 else: for i in range(3): if arr[i] == max_val: ans.append(i+1) return ans

2024년 5월 17일 · 2 분 · 배준수

파이썬 알고리즘 : 소수 찾기

2024년 4월 9일 알고리즘 문제풀이 문제 소수 찾기 난이도 Lv. 2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 from itertools import permutations def check_prime(n): if n < 2: return False elif n<4: return True if not n%2: return False for i in range(2,int(n**(0.5))+1): if not n%i: return False else: return True def make_arr(arr): result = [] n = len(arr) tmp = [] for i in range(1,n+1): tmp += list(permutations(arr,i)) for a in tmp: result.append(int("".join(a))) return result def solution(numbers): answer = 0 result = set() arr = list(numbers) arr = make_arr(arr) arr = set(arr) for i in arr: if check_prime(int(i)): result.add(int(i)) return len(result)

2024년 4월 9일 · 1 분 · 배준수