공부하기 15

[Python] 백준 풀기 11650 - 좌표 정렬하기

파이썬 백준 11650번 실버4 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 sort() 함수에 옵션을 적용하여 사용해 볼 수 있는 문제였다. 2차원 배열로 모든 좌표를 입력 받고, sort() 를 적용해 주는데 key 를 적용하여 원하는 순서로 x, y 좌표를 정렬할 수 있다. 문제에서 제시한 "x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하..

공부하기/백준 2022.10.23

[Python] 백준 풀기 2477 - 참외밭

파이썬 백준 2477번 실버3 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 문제 보기 분류: 기하1, 수학, 구현, 기하학 문제 풀기 가장 긴 가로와 세로로 이루어진 직사각형 땅에서 참외밭만 해당하는 ㄱ형태의 땅만 선택하기 위해서는 필요 없는 부분을 제거해야 한다. 동서남북 방향으로 순차적으로 울타리를 제시해 주는데 이때 제외해야 하는 부분은 예제의 남3 동1 남3 동1과 같이 반복 형태를 띠게 된다. 제시된 입력의 순서에 따라 반복되는 ..

공부하기/백준 2022.10.22

[Python] 백준 풀기 1149 - RGB거리

파이썬 백준 1149번 실버1 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 보기 문제 풀기 전체 비용의 최솟값을 찾기 위해서 이전 집까지 나온 비용을 계속 비교해 봐야 한다. 그리고 이전 집과 다음 집의 색과 겹치지 않게 하기 위해서 세 가지 색상인 빨강, 초록, 파랑을 기준을 잡고 이 전 색깔의 경우를 생각해 본다. 이 두 가지를 상기하면서 따져보게 되면, 빨강을 기준으로 잡았을 때 이전 집은 초록과 파랑이 가능..

공부하기/백준 2022.10.21

[Python] 백준 풀기 1037 - 약수

파이썬 백준 1037번 브론즈1 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 문제 보기 분류: 정수론 및 조합론, 수학, 정수론 문제 풀기 문제에서 모든 약수를 제시해 주기 때문에 이를 리스트로 저장하고 오름차순으로 정리하여 맨 왼쪽 그리고 맨 오른쪽 수를 곱하면 되겠다고 생각하였다. 그런데 내가 이 부분에서 간과한 것이 있었으니 그것은 하나의 수가 제시되었을 때. 예제 입력에도 하나의 수가 있었지만 이 부분은 깜빡 잊고 코드를 작성..

공부하기/백준 2022.10.20

[Python] 백준 풀기 3009 - 네 번째 점

파이썬 백준 2009번 브론즈3 https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 기하 1 문제 풀기 처음에 for 문을 돌려 풀까 하다가 나 스스로가 dictionary 사용이 부족한 것 같아 딕셔너리를 이용해 풀기로 하였다. 그런데 풀다가 보니 너무 돌아 돌아 돌아간 듯.. 여튼, 기본적으로 찾고자 하는 점의 좌표는 x, y 각 세 개의 점에서 중복이 일어나지 않은 좌표의 x, y 이다. 이렇게 문제를 풀기 위해 생각한 딕셔너리 활용 방법으로, 2차원 array 로 세 점의 좌표를 저장하되 x 와 y 를 ..

공부하기/백준 2022.10.20

[Python] 백준 풀기 5086 - 배수와 약수

파이썬 백준 5086번 브론즈3 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 보기 분류: 수학, 사칙연산 문제 풀기 문제에서 주어진 예제 입력과 출력을 보고 if 문을 그대로 적어 내려갔다. 답안을 제출하였는데 잠깐의 실수로 "틀렸습니다" 출력이 보이지 않도록 생각나는 경우의 수를 가능한 줄여서 factor, multiple 그리고 neither 이 return 되도록 하였다. 코드 보기 import sys inputdata = sys.stdin.readline def fnFa..

공부하기/백준 2022.10.19

[Python] 백준 풀기 1712 - 손익분기점

파이썬 백준 1712번 브론즈2 https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 문제 보기 분류: 수학, 사칙연산 문제 풀기 문제에 대한 수학적 수식을 작성하고 이것을 풀고자 하는 미지수에 대해 정리하여 프로그래밍 하면 된다. 문제에서 제시한 A 와 B 는 지출이기에 음의 숫자로 분류하고, C 는 수익이기에 양의 숫자로 분류하여 생산량 x 에 대한 수식으로 작성하면, - A - B * x + C * x 가 된다. 위의 수식에서 손익분기점이 넘어가는 ..

공부하기/백준 2022.10.18

[Python] 백준 풀기 1912 - 연속합

파이썬 백준 1912번 실버2 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 보기 분류: 다이나믹 프로그래밍 문제 풀기 구간합의 최대치가 되기 위해서는 최대한 양수를 누적 시켜나가야 한다. 이에 반하여 최대값에 문제가 되는 경우는 누적합이 음수가 나올때이다. 양의 정수로 이루어진 누적합은 앞으로 나올 수와 합해져 오르락 내리락 할테지만 (누적 합이 0 이상 일때) 최대값에 기여를 할 수 있다. 하지만 음의 정수로 누적합을 기록하는 순간 그 묶음은 ..

공부하기/백준 2022.10.15

[Python] 백준 풀기 10816 - 숫자 카드 2

파이썬 백준 10816번 실버4 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 보기 분류: 자료 구조, 정렬, 이분 탐색, 해시를 사용한 집합과 맵 문제 풀기 이전에 풀었던 1920번 수 찾기 문제의 변형이다. 주어진 카드 범위에 대해 이분 탐색을 하여 원하는 숫자를 찾아 나가지만 답안으로 제출이 필요한 것은 그 수의 개수이다. 그 또한 중복된 숫자의 카드가 존재하기 때문에 이 부분을 해결하는데 쉽게 아..

공부하기/백준 2022.10.13

[Python] 백준 풀기 1780 - 종이의 개수

파이썬 백준 1780번 실버2 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 문제 보기 분류: 분할 정복, 재귀 문제 풀기 기존에 풀었던 2630번 문제 색종이 만들기와 같은 방식의 풀이이다. https://xcevor.tistory.com/56 [Python] 백준 풀기 2630 - 색종이 만들기 파이썬 백준 2630번 실버2 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는..

공부하기/백준 2022.10.12