예. 코테는 언제나 재미있읍니다. 시간도 잘가고 풀릴 때 희열도 엄청나니까요. :)
그래도 뭔가 목표가 있으면 좋을 것 같아서 YBM 주관의 CosPro1급, 프로그래머스 주관의 PCCP 이 두 개를 목표로 공부하고자 합니다.
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 8만 5천원....
가슴이 너무 아파유...
우선 CosPro 1급 모의고사가 있어서 다시 풀었습니다. ( 진짜 프로그래머스 좋은 것 같아요. )
1번 - 스택으로 큐 구현 (빈 칸 채우기)
어렵지 않습니다. 스택, 큐 특징을 알고 문제를 잘 읽기만 하면 수월하게 풀수 있습니다.
1. 두번째 스택이 비었는지 확인 (func_c)
2. 비어있지 않다면, 첫번째 스택의 원소전부를 pop해서 스택2번으로 넘김 (func_b)
3. 두번째 스택에서 pop()한 값을 리턴 (func_a)
2번 - 지그재그 부분 수열
DP 문제입니다
1. 배열이 증가, 감소 체크한 check 배열을 만듦
2. dp에 증가,감소를 채워넣음
3. dp 테이블 중 가장 큰 값을 리턴
3번 - Up and Down
left, right의 구간을 구하면 되는 문제였습니다.
DOWN의 최솟값과 UP의 최대값의 차에서 - 1 해주면 됩니다.
4번 - 아르바이트, 판매사원
1. Job 클래스를 상속받은 PartTimeJob 클래스와 SalesJob 클래스를 정의
2. 그리고 각 클래스의 get_salary() 메서드를 재정의(override)
5번 - 종이접기
최대값을 y, x 축이 반대 일 때도 검수하도록 코드 수정하면 됩니다.
6번 - 보드게임
초기화된 coins 그래프에 더해가는 방식이다 보니 이전 배열의 더 큰 값을 더해 가도록 코드를 수정하면 됩니다.
7번 - 카드셔플
절반이 되는 카드 더미이기 때문에 card_b 의 인덱스를 전체 카드 더미의 전체 절반 만큼 떼어주면 됩니다.
8번 꽃피우기
dfs, bfs 정석 문제입니다.
from collections import deque
def check(graph):
for columns in graph:
if 0 in columns:
return True
return False
def validation(ny, nx, graph):
r = len(graph[0])
c = len(graph)
return 0 <= ny < r and 0 <= nx < c
def bfs(graph, flowers):
dx = [1,-1,0,0]
dy = [0,0,1,-1]
visited = []
q = deque(flowers)
while q:
y, x = q.popleft()
for d in range(4):
nx = x + dx[d]
ny = y + dy[d]
if validation(ny, nx, graph) and graph[ny][nx] != 1:
graph[ny][nx] = 1
if (ny,nx) not in visited:
flowers.append((ny,nx))
return
def solution(garden):
flowers = []
answer = 0
for y in range(len(garden)):
for x in range(len(garden[y])):
if garden[y][x] == 1:
flowers.append((y,x))
while check(garden):
answer += 1
bfs(garden, flowers)
return answer
9번 - 숫자 뽑기
K 크기의 최대, 최소값 차이를 구하는 문제이기 때문에 정렬 후 전체 순회하며 i+K 번째 값과 i 번째 값 차이를 갱신하면 됩니다.
import math
def solution(arr, K):
answer = math.inf
arr = list(sorted(arr))
for i in range(len(arr) - K + 1):
answer = min(answer, arr[i + K - 1] - arr[i] )
return answer
10번 - 메모장
한 단어가 (단어의 길이 + 1) 만큼 차지 하므로 그 부분만 고려해서 코드 작성하면 됩니다. :)
def solution(K, words):
answer = 1
tmp_K = K
for word in words:
if tmp_K - len(word) < 0:
tmp_K = K - len(word) - 1
answer += 1
else:
tmp_K -= len(word) + 1
return answer
'코테' 카테고리의 다른 글
원자 충돌 (0) | 2023.06.02 |
---|---|
PCCP 05.21 후기 (0) | 2023.05.21 |
자율 주행 자동차 (0) | 2023.03.29 |
방화벽 설치하기 (0) | 2023.03.28 |
외주 수익 최대화하기 (0) | 2023.03.28 |