코딩일지/python 백준 알고리즘 81

python 백준 알고리즘 2275번: 부녀회장이 될테야

https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 3층: 1 5 15 35 70 2층: 1 4 10 20 35 1층: 1 3 6 10 15 0층: 1 2 3 4 5 딱히 동일한 규칙성이 보이지 않아 주어진 조건을 그대로 로직으로 구현해야할듯. 내 제출 t = int(input()) # test case for _ in range(t): # t만큼 반복 floor = int(input()) # 층 num = int(input()) # 호 people = [x for x in range(1..

python 백준 알고리즘 10250번: ACM 호텔

https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 101, 201, 301, ... , h01 , 102, 202, 302, ... , h02 순 손님이 방문한 순서 N의 층수 = N에서 건물 층수를 나눈 나머지 ( n%h ) 손님이 방문한 순서 N의 호수 = N에서 건물 층수를 나눈 몫 +1 ( n//h + 1) * N이 건물 층수의 배수인 경우 층수 = 입력받은 층수 호수 = N에서 건물 층수는 나눈 몫 내 제출 t = int(i..

python 백준 알고리즘 2689번: 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B = V 라는 간단한 생각으로 (올라가는 거리)와 (내려오는 거리)의 차를 (높이)로 나누어 +1하는 방식으로 접근하면 나무 정상에 올라갔을때 더이상 떨어지지 않는점을 고려하지 못한다. 이 점에 주의 A*day - B*day >= V-B(다 올라가고 나면 더이상 내려가지 않으므로) day >= (V-B) / (A-B) 내 제출 a,b,v = map(int,input().split()) day = (v-b)/(a-b) # 걸리는 일..

python 백준 알고리즘 1193번: 분수찾기

https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net ex) [1/1], [1/2, 2/1], [3/1, 2/2, 1/3], [1/4, 2/3, 3/2, 4/1], [5/1, 4/3, 3/3, 2/4, 1/5] 1, 3, 6, 10, 15 라인은 1-2-3-4식으로 등차수열 -> 벌집문제에서 활용했던 while문 사용, 인풋받은 수를 라인을 1씩 늘려가면서 빼서 몇번째 줄 몇번째 수인지 구한다. 홀수번째 라인은 사선이 분자가 내림차순, 분모가 오름차순 순이고, n/1 -> 1/n 짝수번째 라인은 사선이 분자가 오름차순, 분모가 내림차순 순이다.1/n -> n/1 내 제출 X=int..

python 백준 알고리즘 2292번: 벌집

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 1 - 7 - 19 - 37 - 61 6 12 18 24 최소 개수의 방 = 6n의 개수로 늘어난다 n = int(input()) room = 1 # 방은 1부터 시작 cnt = 1 # 방의 최소 개수 while n > room: room = room + (6 * cnt) # 6의 배수로 증가 cnt += 1 # 방의 최소 개수가 늘어나게 되는 경우 증가 print(cnt)

python 백준 알고리즘 1712번: 손익분기점

https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 손익분기점 -> 수입이 고정비용+가변비용보다 높아지는 지점 손익이 같아지는 시점 / C*n = A+B*n n(C-B) = A n = A/(C-B) 이므로 +1 해주면 수익이 생산비를 넘어서게 된다. print(int(A/(C-B)+1)) 내 제출 A, B, C = map(int,input().split()) if B>=C: # B(생산비)가 C(가격)보다 크다면 애초에 성립이 안됨 print(-1) e..

python 백준 알고리즘 1316번: 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 내 제출 n = int(input()) group_word = 0 for _ in range(n): word = input() error = 0 for index in range(len(word)-1): # 인덱스 범위 생성 : 0부터 단어개수 -1까지 if word[index] != word[index+1]: # 연달은 두 문자가 다른 때, new_word = w..

python 백준 알고리즘 2941번: 크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 내 제출 croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] # 크로아티아 알파벳 리스트 word = input() for i in croatia : word = word.replace(i, '*') # input 변수와 동일한 이름의 변수 print(len(word)) 예제는 무조건 크로아티아 알파벳으로..

python 백준 알고리즘 5622번: 다이얼

https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 내 제출 dial = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] word = input() time = 0 for unit in dial : for i in unit: # alpabet 리스트에서 각 요소를 꺼내서 한글자씩 분리 for x in word : # 입력받은 문자를 하나씩 분리 if i == x : # 두 알파벳이 같으면 time += dial.index(unit) +3 # time = time + index +3 pri..

python 백준 알고리즘 2908번: 상수

https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 내 제출 num1, num2 = input().split() num1 = int(num1[::-1]) # [::-1] : 역순 num2 = int(num2[::-1]) print(num1) if num1 > num2 else print(num2) 입력받은 두 개의 숫자를 역순으로 바꾸어 비교하는 문제였다. 처음에는 str으로 만들어 [2] [1] [0] 순으로 역순으로 정렬시켜 비교하는 방법을 썼는데 너무 번..