알고리즘 공부/BOJ백준 풀이
[백준 1978번-파이썬/Python] 소수 찾기
http://acmicpc.net/problem/1978 {코드} def isPrime(n): if n
[백준 1011번-파이썬/Python] Fly me to Alpha Centauri
http://acmicpc.net/problem/1011 {코드} from math import sqrt for _ in range(int(input())): x, y = map(int, input().split()) dif = y-x if dif
[백준 2775번-파이썬/Python] 부녀회장이 될거야
http://acmicpc.net/problem/2775 {코드} for _ in range(int(input())): k, n = int(input()), int(input()) residents = [i for i in range(1, n+1)] for _ in range(k): for j in range(1, n): residents[j] += residents[j-1] print(residents[-1]) {설명} 먼저 각 층의 1호에는 1명만 있고, 첫 번째 층(0층)에는 n호에 n명이 있습니다. 그리고 a층의 b호에 들어갈 거주민의 수는 a-1층의 b호까지의 거주민의 합과 같습니다. 즉, 0층의 거주민 리스트를 층의 갯수만큼 반복문을 돌리며 전 호의 거주민 수에 현재 저장되어 있는 거주민의 수..
[백준 10250번-파이썬/Python] ACM 호텔
http://acmicpc.net/problem/10250 {코드} for _ in range(int(input())): h, w, n = map(int, input().split()) a = n%h b = n//h+1 if a == 0: a = h b -= 1 print(a*100+b) {설명} 층 수는 n번 손님의 번호인 n을 층의 개수로 나눈 나머지가 되는데 만약 나머지가 0이라면 최상층인 h가 된다. 해당 층의 몇번째 방인지는 n을 층의 개수로 나눈 몫이 되는데 만약 층이 최상층이라면 몫에 1이 더해지므로 1을 뺀다. w가 사용되지 않는 이유는 w로 나누면 가로로 채우고 h를 쓰면 세로로 채우는데 엘리베이터와 가까운 방을 선호한다고 했으므로 결국 h를 사용하는 것이다.
[백준 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