알고리즘 16

[백준] 2292번: 벌집 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 2. 풀이 n = int(input()) a = (n - 1) / 6 k = 0 while k * (k + 1) / 2 1개 최소 2개의 방을 지나는 방: 2~7 -> 6개 최소 3개의 방을 지나는 방: 8~19 -> 12개 최소 4개의 방을 지나는 방: 20~37 -> 18개..

알고리즘/백준 2023.12.14

[백준] 2903번: 중앙 이동 알고리즘 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2903 2903번: 중앙 이동 알고리즘 상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다. www.acmicpc.net 2. 풀이 n = int(input()) res = 4 for i in range(n): res = (2 * res**(1/2) - 1) ** 2 print(int(res)) 시간: 44ms 코드 길이: 95B 코드를 최대한 간결하게 작성하기 위해 점화식을 구해서 간단하게 정리하려고 한다. 1. 규칙을 찾으면 점화식을 구할 수 있다. a1 = 9 = 3**2 a2 = 25 = ..

알고리즘/백준 2023.12.12

[백준] 2720번: 세탁소 사장 동혁 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 2. 풀이 t = int(input()) changes = [] for i in range(t): changes.append(input()) for j in changes: coins = [] m = int(j) coins.append(m // 25) m = m % 25 coins.append(m // 10) m = m % 10 coins.append(m // 5) m = m % 5 coins.append(m) for k in coins: print(k, ..

알고리즘/백준 2023.12.11

[백준] 11005번: 진법 변환 2 (파이썬)

1. 문제 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 2. 풀이 1차 시도: 실패 l = list(input().split(' ')) n = int(l[0]) b = int(l[1]) num = list() res = '' alpha = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' while True: r = n % b num.append(r) n = n // b if n < b: num.append(n) b..

알고리즘/백준 2023.12.08

[백준] 2745번: 진법 변환 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 2. 풀이 1차 시도: 실패 l = list(input().split(' ')) n = str(l[0]) b = int(l[1]) alpha = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, '..

알고리즘/백준 2023.12.07

[백준] 1920반: 수 찾기 (파이썬)

1. 문제 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 2. 풀이 1차 시도: 실패 n = int(input()) a_num = list(map(int, input().split(' '))) m = int(input()) x_num = list(map(int, input().split(' '))) for i in x_num: if i in a_num: print(1) else: print(0)..

알고리즘/백준 2023.12.03

[백준] 2789번: 블랙잭 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 2. 풀이 n, m = map(int, input().split()) cards = list(map(int, input().split())) max = 0 for i in range(n): for j in range(i+1, n): for k in range(j+1, n): sum = cards[i] + cards[j] + cards[k] if sum >..

알고리즘/백준 2023.12.01

[백준] 25206번: 너의 평점은 (파이썬)

1. 문제 https://www.acmicpc.net/problem/25206 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 2. 풀이 total_credit_times_grade = 0 total_credit = 0 table = {'A+': 4.5, 'A0': 4.0, 'B+': 3.5, 'B0': 3.0, 'C+': 2.5, 'C0': 2.0, 'D+': 1.5, 'D0': 1.0, 'F': 0.0} while True: try: data = input().split() subject = str(data[0]..

알고리즘/백준 2023.11.30

[백준] 2941번: 크로아티아 알파벳 (파이썬)

1. 문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 2. 풀이 1차 시도: 실패 word = input() count = [] i = 0 while i < len(word): if word[i] == 'c': if word[i+1] == '=': count.append('c=') i += 2 elif word[i+1] == '-': count.append('c-') i += 2 elif word[i]..

알고리즘/백준 2023.11.29

[백준] 1316번: 그룹 단어 체커 (파이썬)

1. 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 2. 풀이 n = int(input()) words = [input() for _ in range(n)] count = 0 for word in words: alpha = [] count += 1 for i in range(len(word)): if word[i] in alpha: if word[i] != word[i-1]: count -= 1 break..

알고리즘/백준 2023.11.29