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

프로그래밍 213

[Python] 백준 1890. 점프

https://www.acmicpc.net/problem/1890 1890번: 점프 문제 N×N 게임판에 수가 적혀져 있다. 이 게임의 목표는 가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 규칙에 맞게 점프를 해서 가는 것이다. 각 칸에 적혀있는 수는 현재 칸에서 갈 수 있는 거리를 의미한다. 반드시 오른쪽이나 아래쪽으로만 이동해야 한다. 0은 더 이상 진행을 막는 종착점이며, 항상 현재 칸에 적혀있는 수만큼 오른쪽이나 아래로 가야 한다. 한 번 점프를 할 때, 방향을 바꾸면 안 된다. 즉, 한 칸에서 오른쪽으로 점프를 하거나, 아래로 www.acmicpc.net bfs, dfs 둘 다 시간초과 나는 걸 보고 DP로 풀어야겠다고 직감함. 풀이 접근방법은 예전에 풀었던 '등굣길'과 거의 동일하다. [Pyt..

[Python] 백준 14500. 테트로미노

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 내 풀이방법은 Python 3에서 시간초과를, PyPy3에서는 통과했다. 테트로미노의 저 다섯 가지 shape를 어떤 식으로 정의했..

[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] 백준 11724. 연결 요소의 개수

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. www.acmicpc.net bfs를 사용해서 그래프에 연결된 모든 노드를 확인하는 문제.

[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. 두 개의 그룹이 전부 연결되어 있다면, 두 그룹 인구수의 차를 구한다.

2018 IBM Developer Day - 문과생의 한 달만에 Composer로 해커톤 입상까지 일대기 (18.11.14)

2018.11.14 IBM Developer Day에서 발표했던 자료입니다. 2018.08.30일에 경기도블록체인해커톤 최우수상 이후 IBM에 발표신청을 했었고, 감사하게도 발표 기회를 받을 수 있었습니다. 2020년 현재 Composer는 Deprecated된 상태입니다. IBM에서 개발을 포기한 상황이라, Fabric 2.0까지 등장한 현재는 사용하기 어렵지 않을까 합니다. IBM developer day 2018 - hyperledger composer from 동건 이

[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] 백준 1325. 효율적인 해킹

https://www.acmicpc.net/problem/1325 1325번: 효율적인 해킹 첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한다"를 의미한다. 컴퓨터는 1번부터 N번까지 번호가 하나씩 매겨져 있다. www.acmicpc.net bfs로 모든 경로를 탐색하는 방식으로 풀어내긴 했는데, 이 문제도 Python이라서 겪는 제약이 크다고 느꼈다. 글을 쓰는 시점 기준으로, 백준에서 이 문제를 Python으로 통과한 사람은 한 명이었다. 나도 어떻게든 Python3으로 풀어보려 했는데, 시간초과를 겪지 않으려면 PyPy3로 풀어야..

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

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