알고리즘 12

(백준) - 2×n 타일링 (Python3) (해설없음)

DP (dynami programming) 문제! 어제 풀었던 문제랑 동일한 유형이다 같은 유형을 한 번 풀어보고 규칙을 찾아야 된다는 걸 알게 되니 이보다 쉬울 수가 없다 허허 n = int(input()) dp = [0] * 1001 dp[0],dp[1] = 1,2 for idx in range(1, n+1): dp[idx] = dp[idx-1] + dp[idx-2] print(dp[n] % 10007) 타일을 채워..? 하는 생각에 또 지레 겁 먹었다가 참고 풀어보니 아주 쉬웠던 것이다. 다시 한번 상기해보는 알고리즘 푸는 법 1. 문제길이 보고 겁 먹지 말기 2. 문제 잘 읽기 3. 문제 이해하기 4. 문제 제대로 이해하기 5. 문제 완벽하게 이해하기

(백준) - 1, 2, 3 더하기 (Python3) (해설없음)

처음 프로그래밍 시작할 때 수학같은거 몰라도 된다고 살살 꼬시길래 용기얻고 시작했었는데 아주 틀린 말은 아니지만 속아버린 기분이다 ㅋㅋ 알고리즘에서는 더욱이 중요한 것 같고 음 뭐랄까 그놈에.. 수학적 사고력..! 정수론 등등의 기초 지식이 있다면 상당히 도움이 된다는 걸 느끼고 있다 이 문제는 수 추리만 잘했어도 금방 푸는 쉬운 문제였지 않았나.. 싶다.. [몸으로 체득하고 있는 알고리즘 푸는 법] 1. 문제길이 보고 겁 먹지 말기 2. 문제 잘 읽기 3. 문제 이해하기 4. 문제 제대로 이해하기 5. 문제 완벽하게 이해하기 n = int(input()) dp = [0] * 12 dp[1] = 1 dp[2] = 2 dp[3] = 4 def foo(n): dp[n] = dp[n - 3] + dp[n - ..

(백준) - 소수 구하기 (Python3) (해설없음)

시간초과 코드. 크흠흠ㅎ m, n = map(int, input().split()) for elem in range(m, n + 1): flag = False if elem == 1: continue for elem2 in range(2, (elem//2 + 1)): if flag: break if elem % elem2 == 0: flag = True if not flag: print(elem) 참고해서 맞은 코드 m, n = map(int, input().split()) for elem in range(m, n + 1): if elem == 1: continue for elem2 in range(2, int(elem**0.5)+1): if elem % elem2 == 0: break else: pri..

(백준) - 수 정렬하기 3 (Python3) (해설없음)

알고리즘을 순수하게 내 머리로만 푼지가 꽤 된 것 같다. 풀다가 검색해서 도움받고, 그러다보면 그 분이 구현해놓은 방식과 꽤 유사하게 구현하게 되더라 '흐음 공부가 되는걸까?' '이미 잘 정리해놓은 글 들이 이미 무수히 많은데'.. 라는 부정적인 생각과 '왜 중복되는 글을 써서, 안그래도 넘쳐나는 세상 데이터에 중복인 데이터를 만드는걸까' 하는 생각이 들었다 ㅎㅎ,, 근데, 나 같은 사람도 있다. 알고리즘을 풀면서 나는 왜 이렇게 못하지? 하고 비교하며 괴로워하다가 가끔씩 보이는 나와 비슷한 수준으로 보이는 사람을 보며 힘을 얻었다. 이게.. 참 멋진 방법은 아니지만, 덕분에 힘을 얻었고 포기하지 않았던 것 같다. 중요한 건 포기하지 않는거니까 그래서 나 같은 사람도 있으니까 알고리즘 풀면서 괴로워하지 ..

(백준) - 수 정렬하기 3 (Python3) (해설없음)

import sys n = int(input()) L = [0] * 10001 for _ in range(n): L[int(sys.stdin.readline())] += 1 for idx, _ in enumerate(L): if L[idx] != 0: for _ in range(L[idx]): print(idx) input() 을 sys.stdin.readline() 교체하니 정답이 됐다. 처음에는 시간초과가 떠서 '혹쉬.. 이중포문 부분이 잘못됐나?' 했는데 수 정렬하기2 문제에서 시간초과 관련하여 답변해주신 분 덕분에 금방 원인을 찾을 수 있었다.. sys.stdin.readline() 이중포문이라 안된다는 생각이 혹시 시간복잡도에 대한 개념이 없어서 그런걸까 흠흠.. ㅇㅋ.. ㄱㄱ

(백준) - 분산처리 (Python3) (해설없음)

뭐지 이 쉬운 문제는? n = int(input()) for _ in range(n): a,b = map(int, input().split()) print(a**b % 10) 스윽 시간초과 그래서 검색검색 n = int(input()) for _ in range(n): a, b = map(int, input().split()) if a % 10 in [1, 5, 6]: # 패턴 1개 print(a) elif a % 10 == 0: print(10) elif a % 10 in [4, 9]: # 패턴 2개 if b % 2 != 0: # 홀수 print(a) else: if a % 10 == 4: print(6) elif a % 10 == 9: print(1) elif a % 10 in [2, 3, 7, 8]..

(백준) - 재귀함수가 뭔가요? (Python3) (해설없음)

재귀에 대해서 알 듯 말 듯 알 듯 말 듯 말듯하다.. 알고리즘 풀 때마다 느끼는거지만 나는 ㄹㅇ 빡대가리다 num+=1 을 func(num+1) 로 변환한다는 생각을 못하다니 그럼 남들보다 더 노력해야하는데 어유 ㅅㅂ n = int(input()) num = 0 question = '어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.' question2 = '"재귀함수가 뭔가요?"' itermessage = '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.' itermessage2 = '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.' itermessage3 = '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인..

(백준) 더하기 사이클(Python3) (해설없음)

더 어려운 문제를 풀다가 자괴감이 들어 다시 차근차근 기초를 다지는 중인데.. 나중에 보니 mod 10으로 하면 되는 쉬운 문제인데.. 빙빙 돌아와뿠네 문법 처음 떼고 알고리즘 풀 때 보다 더 머리가 안돌아가는 것 같다 두정엽이 쪼그라들고있는 거 같다.. n = int(input()) nn = n count=1 def solution(n,count): if n < 10: n = '0' + str(n) else: n = str(n) # '26' ten_num = n[-1] # '6' one_value = int(n[0]) + int(n[1]) one_num = str(one_value)[-1] result = ten_num + one_num result = int(result) if nn != result..

(SW Expert Academy) - [파이썬 S/W 문제해결 기본] - 전기버스 (미완성) (해설없음)

금방 풀릴 거라고 생각했는데 크흠 7 / 10 맞은 코드다 결국 다른분들 코드를 확인해보니 접근방식이 달랐다 깔끔하게 술술 풀리는 코드.. #나중에 풀기 line_cnt = int(input()) for i in range(line_cnt): mv, dt, cn = map(int, input().split()) charger_index = list(map(int, input().split())) load = [0] * (dt+1) charge_cnt = 0 # 도달 불가능 판단 조건 flag = True for idx in range(len(charger_index)-2): if mv < (charger_index[idx+1] - charger_index[idx]): flag = False if flag..