공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍 211

[Python] 백준 19236. 청소년 상어

https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net DFS 문제. 두 달 정도 쉬었더니, 그새 구현방법을 다 까먹어서 엄청 버벅댔다. 잘 만든 코드는 아니니까, 나중에 더 세련된 방법으로 다시 풀어봐야겠다...

[Python] 백준 17144. 미세먼지 안녕!

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 시뮬레이션 문제. pypy3으로는 통과하지만 Python3으로는 시간초과가 나는데, Python3 통과코드를 보고 어떻게 수정해봐도 내 코드는 더 이상 최적화가 안 된다. 왜지..?

[Python] 프로그래머스. 2019 카카오 recruit - 블록 게임 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/42894 코딩테스트 연습 - 블록 게임 [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0],[0,0,0,0,0,4,4,0,0,0],[0,0,0,0,3,0,4,0,0,0],[0,0,0,2,3,0,0,0,5,5],[1,2,2,2,3,3,0,0,0,5],[1,1,1,0,0,0,0,0,0,5]] 2 programmers.co.kr 구현까지 시간이 오래 걸렸던 문제. 검은 블록을 채울 수 있는 모든 공간에 검은 블록을 채우고, 검은 블록과 설치된 블록을 합쳤을 때 직사각형 블록..

[Python] 백준 11003. 최솟값 찾기

11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 슬라이딩 윈도우 문제. 매번 윈도우 위치를 변경할 때마다 min함수를 사용할 경우, 시간복잡도가 O(n**2)가 된다. deque를 활용해 삽입/삭제를 빠르게 수행하되, deque에 값을 저장하는 방식을 약간 변경하면 효율적으로 연산을 수행할 수 있다. 아래 풀이에서 더 상세한 해설을 볼 수 있다. 백준 11003번 문제 (최솟값 찾기) with Java · 쾌락코딩 백준 11003번 문제 (최솟값 찾기) with Java 03 D..

[Python] 프로그래머스. 소수 만들기 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. combinations으로 숫자 세 개 뽑기 2. 뽑은 세 개의 숫자를 합한 값이 소수인지 판별하기.

[Python] 프로그래머스. 점프와 순간이동 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 현재 위치부터 0까지 도달하는 방법을 역산하면 간단히 식을 도출할 수 있는 문제. 이전 위치 * 2로 현재 위치에 도달할 수 있으면 건전지 사용이 필요없다. 즉, 현재 위치 % 2 == 0이면 건전지 사용 없이 위치에 도달할 수 있다. 만약 현재 위치 % 2 != 0이라면, 현재 위치 % 2가 0이 될 수 있도록 1을 빼준다. 문제의 예시 5000은 5000 -> 2500 -> 1250 -> 625 -> 62..

[Python] 백준 17822. 원판 돌리기

https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀있고, i번째 원판에 적힌 j번째 수의 위치는 (i, j)로 표현한다. 수의 위치는 다음을 만족한다. (i, 1)은 (i, 2), (i, M)과 인접하다. (i, M)은 (i, M-1), (i, 1)과 인접하다. (i, j)는 (i, j-1), (i, j www.acmicpc.net 원판 회전을 위해 deque를 사용하고, 인접한 숫자를 체크하기 위해 bfs를 활용한다. 이차원 배열로 구현하되 1. 이차원 배열..

[Python] 프로그래머스. 타일 장식물 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/43104 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그림에서 바로 점화식을 찾을 수 있는 문제. table[idx] = idx번째 사각형의 한 변의 길이로 정의하면 table[1] = 1, table[2] = 2이고 idx >=3일 때 table[idx] = table[idx-1] + table[idx-2]가 된다.