본문 바로가기

코테

CosPro, PCCP 준비

728x90
반응형
SMALL

예. 코테는 언제나 재미있읍니다. 시간도 잘가고 풀릴 때 희열도 엄청나니까요. :)

그래도 뭔가 목표가 있으면 좋을 것 같아서 YBM 주관의 CosPro1급, 프로그래머스 주관의 PCCP 이 두 개를 목표로 공부하고자 합니다.

 

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ  8만 5천원....

가슴이 너무 아파유...

 

우선 CosPro 1급 모의고사가 있어서 다시 풀었습니다. ( 진짜 프로그래머스 좋은 것 같아요. )

 

https://school.programmers.co.kr/learn/courses/11133/11133-cos-pro-1%EA%B8%89-python-%EB%AA%A8%EC%9D%98%EA%B3%A0%EC%82%AC

 

COS Pro 1급 Python 모의고사

현재 IOS/안드로이드 앱 내에서는 결제를 지원하지 않습니다.

school.programmers.co.kr

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

 

728x90
반응형
LIST

'코테' 카테고리의 다른 글

원자 충돌  (0) 2023.06.02
PCCP 05.21 후기  (0) 2023.05.21
자율 주행 자동차  (0) 2023.03.29
방화벽 설치하기  (0) 2023.03.28
외주 수익 최대화하기  (0) 2023.03.28