본문 바로가기

분류 전체보기165

[백준/Python] 2501번 약수 구하기 문제 ■ 2501번 약수 구하기 문제 ■ 코드 풀이 두 가지 풀이법을 공유드리겠습니다. 처음 제가 푼 코드와 업그레이드한 코드입니다. 먼저 아래는 기본적으로 누구나 생각할 수 있는 코드입니다. 아래 코드는 N이 10,000 이하의 수여서 최대 10,000번의 for문을 실행할 수 있습니다. 제출할 때는 실패할까 봐 조마조마했지만, 다행히 정답처리 된 코드입니다. N, K = map(int, input().split()) num_list = [] for i in range(1,N+1): if N % i == 0: num_list.append(i) if K > len(num_list): print(0) else: print(num_list[K-1]) 그렇지만, 약수의 속성을 잘 안다면 코드를 더 단축할 수 있습니.. 2023. 4. 12.
[백준/Python] 10757번 큰 수 A+B 문제 ■ 10757번 큰 수 A + B 문제 ■ 코드 풀이 이 문제를 봤을 때 '너무 쉬운데?'라는 생각을 했습니다. 알고 보니, 파이썬에서만 쉬운 거였습니다. 다른 언어에서는 큰 수 연산 과정에서 메모리 초과가 발생한다고 합니다. 처음 알았네요. 그래서 파이썬은 아래와 같은 코드면 쉽게 문제를 풀 수 있습니다. A, B = map(int, input().split()) print(A+B) 하지만 이렇게 풀면 공부가 안 되겠죠? 제 나름대로 머리를 굴려서 아래와 같이 코드를 바꿔봤습니다. 어디서 들은 건(?) 있어서 두 개의 큰 수를 string으로 입력받고, 이를 거꾸로 뒤집어서 일의 자리부터 더하는 코드를 만들어봤습니다. 정답은 맞게 나오는데, 제출해 보니 시간 초과가 나오네요. 아마 정말 '엄청나게 큰 .. 2023. 4. 11.
[백준/Python] 2869번 달팽이는 올라가고 싶다 문제 ■ 2869번 달팽이는 올라가고 싶다 문제 ■ 코드 풀이 이 문제의 핵심은 시간제한입니다. 시간제한이 0.25초로 굉장히 짧은 편인데, 올라가야 하는 높이는 최대 천만이고 하루에 올라가는 높이는 최소 1입니다. 시간제한이 없다면 while문을 활용하여 많이들 푸셨을 텐데, 목표 높이가 최대이고 하루 올라가는 높이가 최소 수준이라면 최악의 경우 천만번의 반복문을 실행해야 합니다. 다시 말해 이 문제에서는 반복문을 사용하지 말라고 대놓고 말하고 있는 것입니다. 반복문을 사용하지 않고도 아이디어로 간단히 문제를 풀 수 있습니다. 우선 소요되는 일수를 day라는 변수로 선언합니다. 낮에는 올라가고 밤에는 미끄러지므로, 올라가야 하는 높이 V를 (올라가는 높이 A - 내려가는 높이 B)로 나눠주면 됩니다. 또한,.. 2023. 4. 10.