분류 전체보기
[백준] 13549번 숨바꼭질 3(feat. 다익스트라, BFS)
[백준] 13549번 숨바꼭질 3(feat. 다익스트라, BFS)
2023.01.19https://www.acmicpc.net/problem/13549 문제 분석 첫 번째 단계 (문제 요약 및 조건 파악하기) 수빈이는 현재 점 N(0
파이썬 generator와 yield (python generator, yield, yield from)
파이썬 generator와 yield (python generator, yield, yield from)
2023.01.18이번 글에서는 파이썬에서 제너레이터(generator)를 만드는데 사용되는 yield 키워드에 대해서 알아보겠다. yield 키워드 대부분의 프로그래밍 언어에서 일반적으로 함수는 어떤 결과 값을 return 키워드를 이용해서 반환을 한다. 하지만, 파이썬에서는 함수가 yield 키워드를 이용해서 다소 다른 방식으로 결과 값을 제공할 수 있다. 백문이 불여일타다. 간단한 예제 코드부터 살펴보겠다. 알파벳 A, B, C 를 결과 값으로 반환하는 함수를 작성해보겠다. def return_abc(): return list("ABC") 위 함수를 yield 키워드를 이용해서 작성해보자. def yield_abc(): yield "A" yield "B" yield "C" 가장 먼저 눈에 두드러지는 차이는 retur..
[백준] 25682번 체스판 다시 칠하기 2(feat. 2차원 배열의 누적 합)
[백준] 25682번 체스판 다시 칠하기 2(feat. 2차원 배열의 누적 합)
2023.01.16https://www.acmicpc.net/problem/25682 문제 접근 첫 번째 단계 문제의 조건은 다음과 같다. M * N 크기의 보드가 있는데, 어떤 정사각형은 검은색으로 칠해져있고, 나머지는 휜색으로 칠해져있음. 이 보드를 잘라서 K * K 크기의 체스판으로 만들려고함. 정상적인 체스판은 검은색과 휜색이 번갈아서 칠해져 있어야 함. 구체적으로, 각 칸이 검은색과 휜색 중 하나로 칠해져 있으면서, 변을 공유하는 두개의 사각형은 다른 색으로 칠해져 있어야 함. 이 정의를 따르면, 체스판을 색칠하는 경우는 두 가지 뿐이다. 1. 맨 왼쪽 위 칸이 휜색인 경우, 2. 맨 왼쪽 위 칸이 검은색인 경우 보드가 체스판 처럼 칠해져 있다는 보장이 없어서, M * N 크기의 보드를 K * K 로 자른 후, ..
[백준] 16139번 인간-컴퓨터 상호작용(feat. 누적 합)
[백준] 16139번 인간-컴퓨터 상호작용(feat. 누적 합)
2023.01.13https://www.acmicpc.net/problem/16139 문제 접근 첫 번째 단계 문제의 조건은 다음과 같다. 첫 줄에 문자열 S가 주어진다. 문자열의 길이는 200,000자 이하이며 알파벳 소문자로만 구성. 두 번째 줄에는 질문의 수 q가 주어지며, 문제의 수는 1
[백준] 10986번 수열(feat. 누적 합, 수학)
[백준] 10986번 수열(feat. 누적 합, 수학)
2023.01.13https://www.acmicpc.net/problem/10986 문제 접근 첫 번째 단계 문제의 조건을 정리하면 아래와 같다. N과 M이 주어지는데 (1
[백준] 2559번 수열(feat. 누적 합, 투 포인터, 슬라이딩 윈도우)
[백준] 2559번 수열(feat. 누적 합, 투 포인터, 슬라이딩 윈도우)
2023.01.13https://www.acmicpc.net/problem/2559 문제 접근 첫 번째 단계 문제의 조건을 정리하면 아래와 같다. 수열이 주어지고, 그 수열의 부분 구간합이 가장 큰 것을 구해야 한다. n과 m이 주어지는데, n은 전체 수열의 길이이고, m은 합을 구하기위한 연속적인 수의 길이이다. n의 조건을 보면, 2