PS 47

[Programmers] 다단계 칫솔 판매(파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 이 문제는 Programmers의 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제집에 있는 문제로 Level 3에 해당되는 문제입니다. 해당 문제는 조직원, 각 조직원 별 추천인, 판매 직원, 각 판매에 대한 판매액이 입력 값으로 주어지며 모든 조직원의 수익을 계산하는 것이 목표입니다. 접근 방식 문제에 명시되어 있는 조건에 따라 구현을 ..

PS/Python 2021.07.24

[Programmers] 행렬 테두리 회전하기(파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 해당 문제는 Programmers의 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제집에 있는 문제로 Level 2에 해당되는 문제입니다. 해당 문제는 queries에 직사각형 범위의 좌표가 주어지면 범위의 테두리에 있는 숫자들을 시계방향으로 한 칸씩 회전시키며 회전시키는 각 회차마다 가장 작은 수들을 구하는 게 목표입니다. 접..

PS/Python 2021.07.18

[Programmers] 로또의 최고 순위와 최저 순위 (파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 해당 문제는 Programmers의 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제집에 있는 문제로 Level 1에 해당되는 문제입니다. 해당 문제에서는 입력 값으로 구매한 로또 번호(단, 몇몇 번호는 지워진 상태로 입력될 수 있음)와 당첨 번호가 주어지고 최대 등수와 최소 등수를 구하는 게 목표입..

PS/Python 2021.07.18

[백준] 14891 - 톱니바퀴 (파이썬, Python)

https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 해당 문제는 구현 문제입니다. 문제의 목표는 k번 회전한 후 각 톱니바퀴의 12시 방향에 있는 극에 따라 점수를 계산하고 점수의 합을 구하는 것입니다. 톱니바퀴가 회전하는 경우는 두 가지로 나뉩니다. 1. 톱니바퀴를 직접 회전시킨다. - 각 회차마다 회전시키는 톱니바퀴가 여기에 해당됩니다. 2. 옆 톱니바퀴에 의해서 회전된다. - 인접한 톱니바퀴가 회전을 한다면 인접 부분의 극을 비교하여 회..

PS/Python 2021.07.08

[백준] 2374 - 같은 수로 만들기 (파이썬, Python)

https://www.acmicpc.net/problem/2374 2374번: 같은 수로 만들기 n(1 ≤ n ≤ 1,000)개의 자연수 A[1], A[2], A[3], …, A[n]이 있다. 이 자연수에 Add(i)라는 연산을 하면, A[i]가 1만큼 증가한다. 이때, A[i]만 증가하는 것이 아니고, A[i]의 좌우로 인접한 같은 수의 그룹이 한 www.acmicpc.net 해당 문제는 그리디 알고리즘으로 해결하는 문제입니다. 문제에는 특별한 Add 연산이 소개되며, 이 문제의 목표는 주어진 모든 수를 같게 만들기 위한 최소한의 Add 연산 회수를 구하는 것입니다. Add(i) 연산은 i번째 수와 주변 같은 숫자를 가지는 그룹의 수들을 모두 1씩 증가시키는 연산입니다. Add 연산을 최소로 하여 모든..

PS/Python 2021.07.06

[백준] 19238 - 스타트 택시 (파이썬, Python)

https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 해당 문제는 그래프 문제입니다. 문제의 목표는 주어진 모두 승객들을 목적지까지 이동시킨 후 남아 있는 연료를 구하는 것입니다. 단, 택시가 이동하는 중 연료가 바닥이 나거나 승객을 목적지까지 이동시킬 수 없다면 -1을 출력합니다. 이 문제는 두 가지 중요한 조건이 있다고 생각합니다. 조건 1. 다음에 태울 승객을 정할 때는 최단 거리에 있는 승객을 태운다. ..

PS/Python 2021.06.13

[백준] 14500 - 테트로미노 (파이썬, Python)

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 해당 문제의 분류는 구현입니다. 이 문제를 두 가지 종류의 해결하는 방법이 있는 거 같습니다. 1) 모든 테트로미노 경우의 수를 구하고 칸마다 대입해보기 2) 이동 거리를 4 칸으로 제한하고 탐색을 진행하기 저는 위 방법 중 2번 방법으로 시도했습니다. 제 코드는 아래와 같습니다. 해당 코드는 Python3로 제출 시 시간 초과가 발생하여 PyPy3로 제출했습니다. 전체 코드 import sys ..

PS/Python 2021.06.05

[백준] 14499 - 주사위 굴리기(파이썬, Python)

https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 해당 문제는 구현문제입니다. 주사위를 굴려서 각 회차마다 주사위의 윗 면에 쓰인 수를 출력하는 게 이 문제의 목적입니다. 이 문제의 핵심은 주사위의 상태를 저장하는 방법을 구현하는 것이라 생각합니다. 저는 3 X 3 배열에 주사위의 상태를 1 X 6 배열에 각 면에 수를 저장하는 방법을 택했습니다. 주사위의 상태를 저장하는 방법은 ..

PS/Python 2021.05.30

[백준] 17144 - 미세먼지 안녕!(파이썬, Python)

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 해당 문제는 문제의 설명대로 1) 미세먼지를 확산시킨다. 2) 공기 청정기를 작동시킨다. 이 두 가지를 구현하는 문제이다. 저는 이 문제를 Python3로 제출할 때 시간 초과가 났습니다. 제 코드에 비효율적인 부분이 있는 거 같습니다. 하지만 구현 문제인 만큼 정확성을 확인하고 싶었고 아래의 글을 참고한 후 PyPy3로 제출을 했습니다. https://www.acmicpc.net/board/v..

PS/Python 2021.05.30

[백준] 17140 - 이차원 배열과 연산(파이썬, Python)

https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 해당 문제는 조건에 따라 각 행 또는 열에 연산을 반복하면서 주어진 위치에 지정한 값이 있는지 확인하는 문제입니다. 저는 이 문제를 풀 때 각 행과 열의 최대 길이가 100이 된다는 것에 집중했습니다. 처음부터 100 X 100 크기의 배열을 이용해서 작업을 했습니다.(행과 열의 길이를 맞추는 작업을 간단히 하기 위해 위와 같이 했지만 이것 때문에 속도가 느려진 게 아닌가 생각이 듭니..

PS/Python 2021.05.19