전체 글
[백준 2869번-파이썬/Python] 달팽이는 올라가고 싶다
http://acmicpc.net/problem/2869 {코드} from math import ceil a, b, v = map(int, input().split()) print(ceil((v-a)/(a-b))+1) {설명} 달팽이는 아침, 즉 올라갈 때 우물을 벗어날 수 있으므로 마지막 날은 올라가지만 내려오지는 않는다. 그러므로 전체 높이에서 아침에 올라가는 높이인 a만큼 뺀 후 이 높이를 올라가는데 걸리는 날을 구하고 거기에 다시 a만큼 올라가는데 걸리는 시간인 1을 더하면 된다. 이때 a를 뺀 만큼을 올라가려면 하루에 a만큼 올라가 b만큼 내려오기 때문에 실질적으로 하루에 a-b만큼 올라가기 때문에 (v-a)를 (a-b)로 나눈 값을 올림 하면 된다.
[백준 1193번-파이썬/Python] 분수 찾기
http://acmicpc.net/problem/1193 {코드} n = int(input()) i = 0 while True: i += 1 n -= i if n
[백준 2292번-파이썬/Python] 벌집
http://acmicpc.net/problem/2292 {코드} n = int(input()) cnt = 1 while n > 1: n -= 6*cnt cnt += 1 print(cnt) {설명} 먼저 규칙을 알기 위해 다음 표를 봐주시기 바랍니다. 숫자 범위 답 마지막 수의 수식 지난 범위와 6의 계수 차 1 1 1 + (6*0) 0 2~7 2 1 + (6*1) 1 8~19 3 1 + (6*3) 2 20~37 4 1 + (6*6) 3 위의 표를 보면 지난 범위와의 계수 차와 답은 1 차이라는 것을 알 수 있는데 이는 시작점도 포함하기 때문입니다. 그러면 입력받은 수에서 6의 배수별로 빼가며 1보다 작을 때까지 반복하면 됩니다. 이때 1보다 작다라고 하는 이유는 시작이 1이기 때문에 수의 단계의 범위가..
[백준 2839번-파이썬/Python] 설탕 배달
http://acmicpc.net/problem/2839 {코드} n = int(input()) cnt = 0 while True: if n % 5 == 0: print(cnt + n // 5) break n -= 3 cnt += 1 if n 15//5 굉장히 당연한 식인데요, 이를 이용해 5의 배수가 될때까지 3을 계속해서 빼주면 세 가지의 경우 중 하나가 발생합니다. n이 5의 배수인 경우 - 이때는 n을 5로 나눈 몫과 현재 봉지의 개수를 더한 값을 출력함 n이 0인 경우 - 이때도 n을 5로 나눈 나머지가 0이므로 결과적으로 봉지의 개수 출력 n이 0보다 작은 경..
[백준 1712번-파이선/Python] 손익분기점
http://acmicpc.net/problem/1712 {코드} a, b, c = map(int, input().split()) if c
[백준 1316번-파이썬/Python] 그룹 단어 체커
http://acmicpc.net/problem/1316 {코드} ans = 0 for _ in range(int(input())): word = input() new_word = '' isTrue = True for c in word: i, j = word.find(c), word.rfind(c) if word.count(c) != j-i+1: isTrue = False break ans += isTrue print(ans) {설명} *True는 숫자 1의 값을, False는 숫자 0의 값을 가지고 있습니다. 위 방법은 어떤 문자에 대해 그 문자의 처음과 마지막 위치를 통해 문자들이 연결되어 있는지 아닌지 확인합니다. 예시를 들어 설명해보겠습니다. -그룹 문자인 예 word라는 변수가 있고 'hhaap..
[백준 2941번-파이썬/Python] 크로아티아 알파벳
http://acmicpc.net/problem/2941 {코드} croatian_alphabets = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for c_alphabet in croatian_alphabets: word = word.replace(c_alphabet, ' ') print(len(word)) {설명} 문제는 크로아티아 알파벳의 개수를 출력하라고 요구하므로 크로아티아 알파벳의 특이 문자들을 아무 문자 하나로 각각 바꿔주고 그 길이를 출력하면 됩니다. *문자열의 replace함수는 replace(선택할 문자열, 바꿀 문자열, 개수=옵션)의 형태로 되어 있으며 바꾼 문자열을 반환한다.
[백준 5622번-파이썬/Python] 다이얼
http://acmicpc.net/problem/5622 {코드} classify = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] s = input() ans = 0 for c in s: for idx, dial in enumerate(classify): if c in dial: ans += 3 + idx break print(ans) {설명} 다음 표를 보면 알파벳을 문제의 다이얼과 같이 구분해서 리스트로 만들었을 때 인덱스와 걸리는 시간과의 관계를 알 수 있다. 알파벳 걸리는 시간 인덱스 구분 ABC 3 0 0 + 3 DEF 4 1 1 + 3 GHI 5 2 2 + 3 JKL 6 3 3 + 3 MNO 7 4 4 + 3 PQRS 8 5 5 + ..