[백준] 16120 PPAP [Python]
·
알고리즘/백준
위 문제는 주어진 입력을 받았을 때 PPAP 문자열인지 아닌지 구분하는 문제입니다. 처음에 이 문제를 봤을때 if문을 여러개 해서 케이스에 맞게 구현을 시도했었는데 고려해야할 사항들도 많고 입력 값이 길어질 때의 케이스를 구현하기가 어려워서 최대한 스택을 활용해서 풀어보기로 했습니다. 먼저 예를 들어 PPPAPAP를 하나씩 나눠서 입력받는다고 가정하고 하나씩 stack에 입력합니다. stack에 입력하다가 stack을 뒤에서부터 4개를 잘랐을때 그 문자열이 PPAP일경우 PPAP를 pop해주고 p를 append해줍니다. 처음에는 stack을 앞에서부터 자를려고 시도했었다가 성립이 안되는 몇가지 반례를 발견하고 뒤에서부터 자르는걸로 방법을 바꿨습니다. from sys import stdin as s s =..
[백준] 3190 뱀 [Python]
·
알고리즘/백준
뱀 문제는 큐를 활용해서 뱀의 길이를 가지고 자신의 몸에 닿는지의 여부를 확인하는 것이 키 포인트입니다. 또한, 방향 전환에 사용하는 dx, dy의 개념과 정해진 N x N 크기를 벗어나면 종료되는 코드를 활용하면 코드를 짜기 수월해집니다. 우선 N * N 의 크기 배열에 0으로 다 값을 넣어줍니다. 그리고 사과의 개수 K만큼 반복문을 돌려주면서 arr배열에 사과의 위치를 1로 업데이트 시켜줘서 사과의 위치를 찾기 쉽게 만들어줍니다. 위의 코드에서 dx, dy는 방향을 정해줄 때 중요한 방법입니다. 많은 문제에서 이 부분이 활용될 수 있으니 알아두면 좋을 것 같습니다! dx, dy를 위아래로 잘라서 봐야하는데 위아래로 잘라서 4등분을 할경우 처음 dx = [0] , dy = [1] 이됩니다. dy만 1이..
[백준]8983 사냥꾼 [Python]
·
알고리즘/백준
이 문제는 이분탐색을 이용하여 새의 좌표가 사냥꾼 배열 arr=[1,4,6,9] 에서 잡을 수 있는 거리인지 확인하고 잡을 수 있으면 카운트하는 문제입니다. 우선 사냥꾼의 사정거리 L을 이용해서 사냥꾼이 새를 잡을 수 있는 범위를 구합니다. 사정거리의 범위는 L-Y(새의 Y좌표)를 X(새의 X좌표)에서 +, - 했을때가 범위입니다. 예를들어 첫번째 새의 경우 (7,2)니까 사정거리 4일경우 4-2의 값을 X값에 더하고 빼줍니다. 그러면 (5,2) ~ (9,2) 사이의 x좌표값에서는 해당 새를 잡을 수 있게됩니다. 이 부분을 활용해서 반복문으로 새를 호출해서 사냥꾼이 잡을 수 있는 새인지 아닌지 확인합니다. 이분 탐색과 반복문을 통해서 풀이한 코드입니다.
yunchan^.^
'파이썬' 태그의 글 목록 (2 Page)