Programming/Algorithm 237

[백준] #2869 달팽이는 올라가고 싶다 python

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 해당 문제는 시간 복잡도를 고려해야하며, 마지막 한 번을 처리하는 것이 관건이다. A, B, V = map(int, input().split()) A_B_sub = A - B cnt = (V - B) // A_B_sub result_V = cnt * A_B_sub + B if V != result_V: print(cnt + 1) else: print(cnt)

[백준] #21193 분수 찾기 python

https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 여러 반복 패턴을 파악하자. N이 1일 때는 1/1로 예외를 처리하고, 규칙성을 발견한다. N이 2, 3은 각각 1/2, 2/1 으로 구성, N이 4, 5, 6은 각각 3/1, 2/2, 1/3 으로 구성, N이 7, 8, 9, 10은 각각 1/4, 2/3, 3/2, 4/1 으로 구성되어 있다. 그래서, 규칙성을 살피면 N의 개수에 따라 규칙성이 있다. 이를 테면, 2개의 숫자에 대해 1/2, 2/1의 합은 1+2, 2+1 = 3으로 되어 있다. 이 경우, size는 3이고 count는 2이다. 그리고 그 다음은, count 3에..

[백준] #2292 벌집 python

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 규칙 파악하는 것이 가장 중요 ! 다음의 규칙 일반화 하기 ! 1 + 6 + 12 + 18 + 24 + ,,,, N = int(input()) cnt = 1 if N == 1: print(cnt) else: tmp_val = 1 while True: tmp_val += 6 * cnt if tmp_val >= N: print(cnt+1) break cnt += 1

[백준] #1712 손익 분기점 python

https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 시간 복잡도를 고려해야한다. 그러나 꼼수를 사용한 것 같다.. 정확한 풀이를 알아보자. default_cost, factory_cost, product_cost = map(int, input().split()) cnt = 0 if factory_cost >= product_cost: print(-1) else: while True: cnt += 10000 if default_cost + factory_..

[백준] #1316 그룹 단어 체커 python

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net dictionary를 이용하여 구현 N = int(input()) cnt = 0 for i in range(N): S = input() nTrue = True S_dict = {} for j in S: S_dict[j] = [] for j in S_dict: for k in range(len(S)): if j == S[k]: S_dict[j].append(k) fo..

[백준] #2941 if문으로 예외 처리 python

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net too many if ~.... S = input() if 'c=' in S: S = S.replace('c=', '|') if 'c-' in S: S = S.replace('c-', '|') if 'dz=' in S: S = S.replace('dz=', '|') if 'd-' in S: S = S.replace('d-', '|') if 'lj' in S: ..

[백준] #5622 다이얼 python

https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net dict 사용한 풀이. S = input() S_dict = {'A':3, 'B':3, 'C':3, 'D':4, 'E':4, 'F':4, 'G':5, 'H':5, 'I':5, 'J':6, 'K':6, 'L':6, 'M':7, 'N':7, 'O':7, 'P':8, 'Q':8, 'R':8, 'S':8, 'T':9, 'U':9, 'V':9, 'W':10, 'X':10, 'Y':10, 'Z':10 } result = 0 for i in S: for j in S_dict: if i == j..

[백준] #2908 문자열 뒤집기 python

https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 문자열 뒤집기 ! N1, N2 = map(str, input().split()) if int(N1[::-1]) > int(N2[::-1]): print(N1[::-1]) else: print(N2[::-1])

[백준] #1157 문자열 upper, lower python

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net upper, lower의 사용 알기. S = input() S_dict = {} for i in S: if i.upper() not in S_dict: S_dict[i.upper()] = [0] elif i.upper() in S_dict: S_dict[i.upper()].append(0) result = "" max_ = -10000 for i in S_dict: if len(S_dict[i]) > max_: max_ = len..