[백준/튼튼한기본기] 10870번: 피보나치수 5
2022. 9. 11. 21:55
컴퓨터/코딩테스트
[문제] [내 코드] a = int(input()) fn1 = 1 fn2 = 0 if a == 0: fn = fn2 elif a == 1: fn = fn1 else: for _ in range(a-1): fn = fn1 + fn2 fn2 = fn1 fn1 = fn print(fn) - 처음에 fn2 = fn1 앞에 fn1 = fn 을 써서 계속 오류가 났다.. 이런 말도 안 되는 실수를..!!!! - 분명히 더 깔끔한 방법이 있을 것 같은데, ... - n이 2보다 작을 때는 어차피 fn = n 인데.. 왜 복잡하게 if문을 썼을까나. - 머리가 터지는 줄 알았다. 살짝 자괴감 듦.;; [개선안] 다른 코드를 보니까 내 코드가 얼마나 웃긴 건지 알겠다. 하하 ... - 재귀함수 def fibo(n): i..
[백준/튼튼한기본기] 2460번: 지능형 기차 2
2022. 9. 11. 21:06
컴퓨터/코딩테스트
[문제] [내 코드] a, b = map(int, input().split()) max_people = people = b for _ in range(9): a, b = map(int, input().split()) people -= a people += b if max_people < people: max_people = people print(max_people) - 첫번째 역에 어차피 내리는 사람이 0이니까.. 굳이 for문 앞에 빼줄 필요는 없었다 - 그리고 파이썬 내장함수 max 를 써서 if문을 한 개라도 줄일 수 있고 - 내리는 사람과 타는 사람의 차이로 바로 더해도 되겠다 [개선안] m_ppl = ppl = 0 for _ in range(10): off, on = map(int, input..
[백준/튼튼한기본기] 10818번: 최소, 최대
2022. 9. 10. 00:22
컴퓨터/코딩테스트
[문제] [내 코드] t = int(input()) t_list = [int(i) for i in input().split(' ')] print(min(t_list), max(t_list)) - 149432KB, 452ms - 파이썬 내장기능 써서 어렵지 않았다.. 하지만 내장함수를 쓰지 않는다면? t = int(input()) t_list = [int(i) for i in input().split(' ')] mini = maxi = t_list[0] for i in t_list[1:]: if i maxi: maxi = i print(mini, maxi) - 시간이 조금 더 걸렸다(544ms)
[백준/튼튼한기본기] 3460번: 이진수구하기
2022. 9. 10. 00:08
컴퓨터/코딩테스트
[문제] [내 코드] for t in range(int(input())): n = int(input()) bi = bin(n)[2:][::-1] for i, b in enumerate(bi): if b == '1': print(i, end=' ') - 30840KB, 68ms - "최하위 비트(least significant bit, lsb)의 위치는 0이다." 라는 부분을 이해하지 못해서 실수를 했다; bin으로 변환한 이진수를 거꾸로 해줘야 됐던 것이다. - [::-1] 를 붙여 string을 reverse했다. 컴퓨팅에서 최하위 비트(least significant bit, LSB)는 이진 정수에서 짝수인지 홀수인지를 결정하는 단위값이 되는 비트 위치 이다. 최하위 비트는 가장 적은 숫자를 오른쪽에..
[백준/튼튼한기본기] 2501번: 약수구하기
2022. 9. 9. 23:40
컴퓨터/코딩테스트
[문제] [내 코드] n, k = map(int, input().split()) try: answer = [num+1 for num in range(n) if n%(num+1) == 0][k-1] except: answer = 0 print(answer) - 메모리 30840KB, 시간 68ms - 정수 n이 주어질 때마다 약수 리스트를 생성해서 (k-1)번째로 인덱싱했다. 인덱싱 되지 않으면 k가 정수의 개수보다 큰 걸로 간주한다. - 주어지는 정수 n마다 리스트를 생성해야 하기 때문에 별로 효율적이지 않은 것 같다. - try-except 문은 최대한 쓰지 않는 게 좋을 것 같아서 for문으로 다시 작성해보기로 했다. n, k = map(int, input().split()) for num in ra..
[백준] 입력/input값 받기
2022. 9. 9. 23:19
컴퓨터/코딩테스트
코딩테스트 준비를 시작한다. 이 티스토리글을 기반으로 차근차근 해나갈 예정이다. 백준 문제를 풀기 위해서는 input 값을 받아와야 하는데, 아래 코드를 활용하면 된다. # 가장 기본 # string으로 입력된다는 점을 기억하자 a = input() # 한 줄에 두 개 이상의 값 [a, b] = input().split() l = [i for i in input().split()] # 정수값으로 받아오는 방법이다 a, b = map(int, intput().split()) # 혹은 import sys a, b = map(int, sys.stdin.readline().split())