전체 글

전체 글

    [백준_python] 피보나치 수 5 || 10870

    [백준_python] 피보나치 수 5 || 10870

    www.acmicpc.net/problem/10870 10870번: 피보나치 수 5피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가www.acmicpc.net#피보나치 수 5 n = int(input()) a = 0 b = 1 c = 0 for _ in range(n-1): c = a + b a = b b = c if n == 0: b = 0 print(b)재귀로 푸는 문제여서 위처럼 for문을 이용하지 않고 풀었어야 했는데,,,#피보나치 수 5_2 (재귀로 풀기) def fibonacci(n): if n

    [백준_python] 팩토리얼 || 10872

    [백준_python] 팩토리얼 || 10872

    www.acmicpc.net/problem/10872 10872번: 팩토리얼0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.www.acmicpc.net#팩토리얼 from math import factorial n = int(input()) print(factorial(n))

    [백준_python] 택시 기하학 || 3053

    [백준_python] 택시 기하학 || 3053

    www.acmicpc.net/problem/3053 3053번: 택시 기하학첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.www.acmicpc.net이 문제는 유클리드 기하학과 택시 기하학의 차이를 알 수 있었던 문제였다. 유클리드 기하학에서의 원의 넓이를 구할 때에는 평소 우리가 생각했던 원형 모양의 원으로 r x r x pi이다. 택시 기하학에서 출발(x1, y1) ~ 도착(x2, y2)사이의 거리를 구하는 공식은 D(t1, t2) = |x1-x2|+|y1-y2| 이다. 가운데 초록선이 유클리드이고 택시 기하학으로의 최단 거리는 파란선이다. 택시 기하학에서의 원의 모양은 마름모의 ..

    [백준_python] 직각삼각형 || 4153

    [백준_python] 직각삼각형 || 4153

    www.acmicpc.net/problem/4153 4153번: 직각삼각형입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.www.acmicpc.net#직각삼각형 while True: a = list(map(int, input().split(' '))) if a == [0, 0, 0]: break a.sort() if a[2]**2 == a[0]**2 + a[1]**2: print("right") else: print("wrong")while로 무한 반복해주고, 받은 문자열을 숫자형으로 바꾸고 리스트로 묶어주었다. 그 후 그 리스트가 [0, 0, 0]이라면 break! 또는 sum..

    [백준_python] 네 번째 점 || 3009

    [백준_python] 네 번째 점 || 3009

    www.acmicpc.net/problem/3009 3009번: 네 번째 점세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.www.acmicpc.net처음에는 점끼리 x가 같으면 빼줘서 y의 길이를 구해주고 해서 길이로 해주는 건가? 싶다가도 뭔가 표현을 어떻게 해주어야 할 지 떠오르지 않아서 패스,, 그 다음엔 x와 y가 둘다 같지 않은 점끼리 대각선이니까 길이를 구해줘서 해주는 건가? 하다가 뭐 이 방법으로도 가능할 것 같긴 한데,, 바로 count함수로 중복되지 않은 값, 즉 하나만 있는 수를 좌표로 찍어주면 되는 것이였다. set()을 이용해서 중복된 값을 없애주기도 하던데,, 이거로 풀어볼 수도 있으려나..? 지금은 마땅히 떠오르지는 ..

    [백준_python] 큰 수 A + B || 10757

    [백준_python] 큰 수 A + B || 10757

    www.acmicpc.net/problem/10757 10757번: 큰 수 A+B두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.www.acmicpc.net#큰 수 A+B a, b = map(int, input().split(' ')) print(a+b)메모리 초과가 될 거라고 생각했는데, 그렇지 않고 맞았습니다! 라는 결과를 보게 되어서 읭스러웠지만 감사했다ㅎㅎ(?)

    [백준_python] 설탕 배달 || 2839

    [백준_python] 설탕 배달 || 2839

    www.acmicpc.net/problem/2839 2839번: 설탕 배달상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그www.acmicpc.net18 = 3 x 6 = 5 x 3 + 3 x 1 (4회) 4 ⇒ -1 9 = 3 x 3 (3회) 11 = 5 x 1 + 3 x 2 (3회) 27 = 5 x 3 + 3 x 4 (7회) 32 = 5 x 4 + 3 x 4 (8회) 32(n)에서 5x6=30(num)을 빼준 나머지(mod = 2)가 3의 배수가 아니면 5를 빼준다. (30 → 25)(25 → 20) 나머지(mod)가 3의 배수가 될 때까지 반복 후, 32 - 20(n..

    [백준_python] 달팽이는 올라가고 싶다, 부녀회장이 될테야 || 2869, 2775

    [백준_python] 달팽이는 올라가고 싶다, 부녀회장이 될테야 || 2869, 2775

    1. 달팽이는 올라가고 싶다. www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B = v: cnt += 1 break meter -= b cnt += 1 print(cnt)하면서도 이미 예제 3에서 숫자가 크게 들어가는 것을 알고 있었기에 이건 분명 시간초과가 뜰 것 같았다. while문을 사용하지 않고, 입력 받은 수대로 바로 값을 출력해야 한..

    [백준_python] 벌집, 분수찾기 || 2292, 1193

    [백준_python] 벌집, 분수찾기 || 2292, 1193

    1. 벌집www.acmicpc.net/problem/2292 2292번: 벌집위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌www.acmicpc.net#벌집 n = int(input()) i = 1 x = 2 y = 8 while True: if n == 1: cnt = 1 break if n in range(x, y): cnt = i + 1 break i += 1 x = y y = (6 * i) + x print(cnt)최소 개수의 방을 지나서 갈 때, 1개) 1 2개) 2~7 (6개) 3개) 8~19 (6x2개) 4개) 20~37 (6x3개 = 37 - 20 ..

    [백준_python] 다이얼, 손익분기점 || 5622, 1712

    [백준_python] 다이얼, 손익분기점 || 5622, 1712

    1. 다이얼www.acmicpc.net/problem/5622 5622번: 다이얼첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.www.acmicpc.net#다이얼 S = input() time = 0 dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] for i in S: for j in dial: if i in j: time += dial.index(j) + 3 print(time)하 일단 for문안으로 if i == "A" 로 or로 하나하나 해주려니 너무너무 길어졌다. 그래서 select같은 게 없나 고민해보다가, 다른 분이 위에 코드처럼 dial 리스트를 구현하고 in..