반응형

코딩테스트 126

[파이썬, Python] 백준 10250: ACM 호텔

문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 코드 import math n = int(input()) for i in range(n): h, w, n = map(int, input().split()) if n > h * w: print("error") break if n % h != 0: floor = n % h else: floor = h hotel_num = math.ceil(n / h) print(floor*100 +..

[파이썬, Python] 백준 2869: 달팽이는 올라가고 싶다

문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 코드 시간 초과 코드 import sys a, b, v= map(int, sys.stdin.readline().split()) n = 1 while True: if (a*n - (b*(n-1))) < v: n += 1 else: break print(n) 정답 코드 a, b, v= map(int, input().split()) days = (v-b)/(a-b) print(int(days) if days == int(days) else int(days..

[파이썬, Python] 백준 1193: 분수찾기

문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 코드 import sys input = sys.stdin.readline x = int(input()) line = 0 max_num = 0 while x > max_num: line += 1 max_num += line gap = max_num - x if line%2 == 0: top = line - gap bot = gap + 1 else: top = gap + 1 bot = line - gap print('%d/%d'%(top,bot)) 설명 홀수 라인과 짝수 라인의 규칙과 x에 따른 라인의 규칙을 찾으면 해결이 가..

[파이썬, Python] 백준 2292: 벌집

문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 코드 n = int(input()) house = 1 cnt = 1 while n > house: house += 6*cnt cnt += 1 print(cnt) 설명 규칙을 찾으면 간단하게 해결되는 문제인데 처음에 규칙이 안보여서 못 풀었던 문제다. 처음의 1을 기준으로 6칸이 늘어나고 늘어난 칸을 기준으로 6칸이 더 늘어난다. 즉 층마다 6칸씩 늘어나는 규칙을 가지고 있다. 각 층의 방을 카운트 하..

[파이썬, Python] 백준 1712: 손익분기점

문제 https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 코드 a,b,c = map(int,input().split()) if b >= c: print(-1) else: print(int(a/(c-b)+1)) 설명 우선 각 수를 입력받아 준다. 가변 비용이 가격보다 높거나 같게 된다면, 아무리 판매량을 늘려도 손익분기점을 넘을 수 없으므로 b가 c보다 같거나 크다면 -1을 출력해주자. 그렇지 않다면 손익분기점을 언젠간 넘으므로, a(고정 비용)를 c-b..

[파이썬, Python] 백준 1065: 한수

문제 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 코드 N = int(input()) sequence_num = set() for i in range(1,N+1): num = str(i) if len(num)

[파이썬, Python] 백준 4673: 셀프 넘버

문제 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 코드 numbers = set(range(1,10001)) remove_numbers = set() for i in range(1, 10001): for j in str(i): i += int(j) remove_numbers.add(i) self_numbers = sorted(numbers - remove_numbers) for i in se..

[파이썬, Python] 백준 1316: 그룹 단어 체커

문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 코드 n = int(input()) cnt = n for _ in range(n): text = input() for i in range(0, len(text)-1): if text[i] == text[i+1]: pass elif text[i] in text[i+1:]: cnt -= 1 break print(cnt) 설명 우선 단어의 개수를 입력 받아준다. 그..

[파이썬, Python] 백준 2941: 크로아티아 알파벳

문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 코드 text = input() croalpha = ['c=','c-','dz=','d-','lj','nj','s=','z='] for i in croalpha: text = text.replace(i,'*') print(len(text)) 설명 우선 크로아티아 알파벳의 리스트를 만들어준다. 이후 입력받은 텍스트에서 만약 크로아티아 알파벳이 있다면, 다른..

[파이썬, Python] 백준 5622: 다이얼

문제 https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 코드 call = str(input()) time = 0 num = ['','ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] for i in range(len(call)): for j in range(len(num)): if call[i] in num[j]: time += num.index(num[j])+2 print(time) 설명 우선 전화를 걸 알파벳을 받아주고 time을 0으로 설정해준다. 이후 각 숫자에 맞는 알파벳끼리 묶어서..

반응형