본문 바로가기

전체 글289

20250402 멘토링 회고 보호되어 있는 글 입니다. 2025. 4. 2.
[백준/파이썬] #13549 테스트 케이스는 맞았는데 틀렸다고 떴다. 30분 이상 풀어도 잘 모르겠어서 풀이를 참고했다. import sysfrom collections import dequeinput = sys.stdin.readlineN, K = map(int, input().split())visited = [False] * (100000+1)answer = 100000visited[N] = Truequeue = deque([(0, N)])if N == K: print(0)else: while queue: current_time, current_position = queue.popleft() if current_position == K: answer = min.. 2025. 4. 1.
[백준/파이썬] #22945 left, right 포인터를 양 끝단에 두고 점점 좁혀오는 방식으로 시도해봤다. 답이 틀렸다고 떴다. import sysinput = sys.stdin.readlineN = int(input())arr = list(map(int, input().split()))left, right = 0, N-1answer = 0while left = next_right: right -= 1 else: left += 1print(answer) 고려하지 못한 케이스들이 있는 것 같아 이번엔 left 포인터를 for문으로 하나씩 순회해 주었다. 이번에는 시간초과가 났다.  그 외의 다른 방법이 30분 안에 생각나지 않아서 풀이를 참고하였다. 시도했던 방법은 맞았는데, 복잡하게 다음 시행을 비.. 2025. 3. 31.
20250330 회고 보호되어 있는 글 입니다. 2025. 3. 30.
[백준/파이썬] #15961 30분 동안 시도했던 풀이는 다음과 같다. 테스트 케이스는 맞았는데 제출하니 틀렸다고 뜨더라. 예외 케이스가 처리되지 않은 것 같다. import sysfrom collections import defaultdictinput = sys.stdin.readlineN, d, k, c = map(int, input().split())sushi_arr = []for _ in range(N): element = int(input()) sushi_arr.append(element)sushi = defaultdict(lambda: 0)sushi_count = 0for i in range(k): current_sushi = sushi_arr[i] if sushi[current_sushi] == 0.. 2025. 3. 29.
[백준/파이썬] #1806 풀이를 참고하지 않고 30분 안에 풀었다!시간제한이 0.5초였어서 O(N^2)가 아닌 O(N)에 풀어야 했고, 그러려면 투 포인터를 사용해야 했다.  left, right 이라는 두 개의 포인터를 사용했고, 현재 배열의 합이 S 이상이 될 때까지 right 포인터를 1씩 증가시켜 배열에 원소를 추가했다. 그러다가 합이 S이 넘으면 다시 left 포인터를 1씩 증가시켜서, 배열의 원소를 감소시켰다. 합이 S 이상인 배열의 '최소' 길이를 구해야 하기 때문이다. import sysinput = sys.stdin.readlineN, S = map(int, input().split())arr = list(map(int, input().split()))left, right = 0, 1current_sum, min.. 2025. 3. 28.