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

분류 전체보기 549

[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 어디서부터 어떻게 손대야 할지 감도 안 와서 어려웠던 문제. 검색해서 알..

[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이므로, 경우의 수..