본문 바로가기

코딩 테스트/Python_백준88

[백준/Python] 2869번 달팽이는 올라가고 싶다 문제 ■ 2869번 달팽이는 올라가고 싶다 문제 ■ 코드 풀이 이 문제의 핵심은 시간제한입니다. 시간제한이 0.25초로 굉장히 짧은 편인데, 올라가야 하는 높이는 최대 천만이고 하루에 올라가는 높이는 최소 1입니다. 시간제한이 없다면 while문을 활용하여 많이들 푸셨을 텐데, 목표 높이가 최대이고 하루 올라가는 높이가 최소 수준이라면 최악의 경우 천만번의 반복문을 실행해야 합니다. 다시 말해 이 문제에서는 반복문을 사용하지 말라고 대놓고 말하고 있는 것입니다. 반복문을 사용하지 않고도 아이디어로 간단히 문제를 풀 수 있습니다. 우선 소요되는 일수를 day라는 변수로 선언합니다. 낮에는 올라가고 밤에는 미끄러지므로, 올라가야 하는 높이 V를 (올라가는 높이 A - 내려가는 높이 B)로 나눠주면 됩니다. 또한,.. 2023. 4. 10.
[백준/Python] 2292번 벌집 문제 ■ 2292번 벌집 문제 ■ 코드 풀이 문제를 보면 숫자 2부터 7까지는 방이 2개입니다. 8부터 19까지는 방이 3개, 20부터 37까지는 방이 4개, 38부터 61까지는 방이 5개입니다. 다시 말해, 방의 개수를 정하는 범위의 끝은 +6→+12→+18→+24→ .. 씩 늘어난다고 볼 수 있습니다. 정확한 수열 용어는 기억이 나지 않지만, 목적은 코드를 푸는 것이므로 아래와 같이 구현할 수 있습니다. N이 1이라면 바로 room의 개수를 출력하면 됩니다. N이 그 이상이라면 범위의 끝자리 숫자와 비교해야 합니다. 끝자리 숫자보다 N이 작거나 같다면, 그 구간이 바로 방의 개수가 될 테니까요. 이런 코드는 직접 손으로 따라 하셔야 이해가 빠릅니다. 7, 15, 20 이렇게 3가지 숫자에 대해 한 번 연습.. 2023. 4. 9.
[백준/Python] 2903번 중앙 이동 알고리즘 문제 ■ 2903번 중앙 이동 알고리즘 문제 ■ 코드 풀이 코드 자체는 심플한데, 아이디어를 떠올리는게 어려웠던 것 같습니다. 문제를 단순히 하면, 정사각형이므로 한 변에 점이 몇 개씩 늘어나는지만 코드로 구현하면 됩니다. 저는 파이썬 string type의 특성을 활용하여 이를 구현했습니다. 초기 점의 상태를 dot이라고 선언하고 값으로 별표 2개, '**' 를 넣어 줍니다. 여기서 dot은 누적되어 관리되어야 합니다. 문제에서 보면 N = 2는 N = 1인 상태에서 점을 추가한 것이니까요. 누적 관리를 위한 변수를 따로 k라고 선언하겠습니다. 마지막으로 점을 추가하는 규칙은 간단합니다. 점과 점 사이에 하나의 점을 찍는 것이므로 len(dot) -1 만큼 찍어주면 됩니다. 그래서 결과적으로 아래와 같이 간.. 2023. 4. 8.