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

Python 188

[Python] 프로그래머스. 2018 카카오 recruit - 압축 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 | 프로그래머스 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 주어진 문제 요구대로 코딩하면 되는 문제. 현재 입력 + 다음 단어가 색인되어 있지 않을 경우 - "현재 입력"의 색인을 배열에 저장한다. - "현재 입력 + 다음 단어" 조합을 새로 색인한다 - "현재 입력"에 다음 단어를 대입한다.

[Python] 백준 17471. 게리맨더링

https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 1. 최대 10개인 도시를 두 개의 그룹으로 분리한다. 2. 각 그룹별로 bfs를 돌며, 그룹의 모든 원소가 연결되어 있는지 확인한다. 3. 두 개의 그룹이 전부 연결되어 있다면, 두 그룹 인구수의 차를 구한다.

[Python] 백준 12100. 2048(Easy)

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 각 방향으로 기울일 때 고려할 점이 많아서 어려운 문제. 1. 위 / 아래로 기울인다 = 2d list를 traspose해서 해결한다 2. 값이 왼쪽으로 합쳐질 때 / 오른쪽으로 합쳐질 때의 연산방법이 다르다.

[Python] 프로그래머스. 2020 카카오 recruit - 외벽 점검 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 | 프로그래머스 레스토랑을 운영하고 있는 스카피는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다. 레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들이 있습니다. 따라서 내부 공사 도중에도 외벽의 취약 지점들이 손상되지 않 programmers.co.kr 어디서부터 어떻게 손대야 할지 감도 안 와서 어려웠던 문제. 검색해서 알..

[Python] 백준 17406. 배열 돌리기 4

https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다. 1 2 3 2 1 1 4 5 6 배열은 회전 연산을 수행할 수 있다. 회전 연산은 세 정수 (r, c, s)로 이루어져 있고, 가장 왼쪽 윗 칸이 (r-s, c-s), 가장 오른쪽 아랫 칸이 (r+s, c+s)인 정사각형을 시계 www.acmicpc.net Brute Force + Deque 활용한 배열 회전으로 풀 수 있는 문제. 1. 제한사항에서 K가 최대 6이므로, 경우의 수..

[Python] 프로그래머스. 카드 게임 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/42896 코딩테스트 연습 - 카드 게임 | 프로그래머스 카드게임이 있다. 게임에 사용하는 각 카드에는 양의 정수 하나가 적혀있고 같은 숫자가 적힌 카드는 여러 장 있을 수 있다. 게임방법은 우선 짝수개의 카드를 무작위로 섞은 뒤 같은 개수의 두 더미로 나누어 하나는 왼쪽에 다른 하나는 오른쪽에 둔다. 각 더미의 제일 위에 있는 카드끼리 서로 비교하며 게임을 한다. 게임 규칙은 다음과 같다. 지금부터 왼쪽 더미의 제일 위 카드를 왼쪽 카드로, 오른쪽 더미의 제일 위 카드를 오른쪽 카드로 부르겠다. 1. 언제든지 programmers.co.kr table[left_idx][right_idx] = left에서 idx만..

[Python] 프로그래머스. 지형 이동 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/62050 코딩테스트 연습 - 지형 이동 | 프로그래머스 [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr 요전에 풀었던 백준 '다리만들기 2'와 동일한 로직의 문제. [Python] 백준 17472. 다리만들기2 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부..

[Python] 백준 13460. 구슬 탈출 2

https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드 www.acmicpc.net 삼성SW역량평가 기출이고, DFS를 활용한 brute force 문제. 구슬이 같은 위치에 놓일 때 선후관계를 구분해서 처리하는..

[Python] 백준 2110. 공유기 설치

https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 한 줄에 하나씩 주어진다. www.acmicpc.net 이분탐색 문제. 이분탐색 값의 기준은 '공유기 사이의 거리'이고, 공유기 사이의 거리를 토대로 주어진 문제 조건에 맞게 공유기 개수를 증가시키면서 이분탐색으로 최적의 '공유기 사이의 거리'를 구하는 문제.

[Python] 프로그래머스. 영어 끝말잇기 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 | 프로그래머스 3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0] programmers.co.kr 주어진 조건대로 구현하면 되는 문제.