전체 글 82

백준 [10773.제로] | Python

✏️ 문제 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net ✏️ 풀이방법 1. 입력된 수를 num 리스트에 담는다. 2. num에서 숫자 하나씩 받을 result리스트 생성 3. num의 값이 0이면 append하지 않고 그 전 값을 pop 한다. 4. result 리스트 안에 있는 원소의 총 합을 출력한다. 📌 코드 n = int(input()) num = [] #입력한 정수를 받는 리스트 for _ in r..

Python/online judge 2024.01.29

Softeer [level2.금고털이] | Python

✏️ 문제https://softeer.ai/practice/6288 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai ✏️ 풀이방법1. n개의 귀금속의 무게(m)과 무게당 가격(p)를 리스트 형태로 2차원리스트(jewelry)에 담는다.2. 가격이 비싼 순으로 담아야 하기 때문에 가격을 기준으로 내림차순 정렬하여 2차원리스트(sjewerly)에 담는다.3. 가격이 높은 순으로 정렬된 2차원리스트(sjewelry)에서 귀금속의 무게(m)을 bag변수에 더해간다.4. bag변수의 무게 총 합이 배낭의 무게(w)보다 커지면 break를 걸고 가방의 무게를 얼마나 초과되었는지를 확인하는 more변수를 생성한다.5. 배낭에 마지막에 담는 무게는 귀금속의 무게에서 초과되는 무게를 빼고 담는다.6..

Python/online judge 2024.01.29

백준 [1193.분수찾기] | Python

✏️ 문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net ✏️ 풀이방법 1. 보기 쉽게 정리해보니 line이 짝수이면 분모가 오름차순, 분자가 내림차순 홀수이면 분모가 내림차순, 분모가 오름차순을 발견 2. line의 수만큼 분수가 나열되기에 while문을 반복해서 line을 찾음 3. 1부터 line의 수만큼 분모리스트(d)와 분자리스트(n)에 숫자 담기 4. line인의 홀수,짝수 여부에 따라 내림차순 출력 정의 📌 코드 x = int(input()) line = 1 d = [] #분모denominator n = [] #분자numerator while True: if x..

Python/online judge 2024.01.29

백준 [1934.최소공배수] | Python

✏️ 문제 https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net ✏️ 풀이방법 - 앞서 풀어본 2609번의 최대공약수와 최소공배수 소스코드를 제출했다가 바로 시간초과가 떴다. 2609번 문제는 범위가 10,000이하의 자연수이지만 1934번은 45,000만큼의 수이다. 1. 소인수분해를 이용해서 풀이를하면 굉장히 많은 반복이 필요하기 때문에 시간초과가 발생한다. 2. 유클리드 호제법을 이용해서 풀이했다. 📌 코드 t = int(i..

Python/online judge 2024.01.29

백준 [2609.최대공약수와 최소공배수] | Python

✏️ 문제 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net ✏️ 풀이방법 - 최대공약수('GCD':Greatest Common Divison)는 두 개 이상의 수의 공통된 약수 중 가장 큰 약수를 말하고, 최소공배수('LCM':Least Common Multiple)는 두 개 이상의 수의 공통된 배수 중 가장 작은 수를 말한다. - 다음 그림처럼 소인수분해를 통해서 최대공약수와 최소공배수를 구할 수 있다. 1. 최대공약수(gcd)는 두 자연수 a,b를 공통으로 나누는 수(i)를 찾아 리스트(gcd)에 담아서 가..

Python/online judge 2024.01.29

백준 [9063.대지] | Python

✏️ 문제 https://www.acmicpc.net/problem/9063 9063번: 대지 첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. www.acmicpc.net ✏️ 풀이방법 1. 2차원리스트(point)에 옥구슬의 위치를 리스트형식으로 담고, 옥구슬이 하나도 없는 경우에는 0을 출력하도록 한다. 2. 최소 크기의 직사각형을 구하기 위해 점의 위치를 오름차순으로 정렬해야 하는 데 한 축에 같이 존재하는 경우가 있음을 유의해야하기 때문에 x와 y좌표를 각각의 리스트로 받았다. 3. x좌표 y 좌표 각각의 리스트에서 가장 큰 값에서..

Python/online judge 2024.01.29

백준 [2798.블랙잭] | Python

✏️ 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net ✏️ 풀이방법 1. m에 최대한 가까운 카드를 합하기 위해 sort()메소드로 card를 정렬한다. 2. 3중 for문으로 x,y,z에 카드 세장을 뽑아 m에 가까운 최대합을 뽑는다. 📌 코드 n,m = map(int,input().split()) card = list(map(int,input().split())) card.sort() maxtotal =..

Python/online judge 2024.01.29

백준 [10814.나이순 정렬] | Python

✏️ 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net ✏️ 풀이방법 1. 가입한 순서대로 입력했기 때문에 나이순으로만 정렬 📌 코드 n = int(input()) member = [list(map(str,input().split())) for _ in range(n)] smember = sorted(member,key=lambda x:int(x[0])) for i in range(n): print(smember[i][0], smember[i][..

Python/online judge 2024.01.29

백준 [11651.좌표 정렬하기2] | Python

✏️ 문제 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net ✏️ 풀이방법 - 문제에서 y좌표를 오름차순으로 정렬하고, x 좌표가 증가하는 순서로 정렬하라 하였지만 이대로 수행하면 시행착오2와 같은 문제가 발생한다. 1. x좌표를 오름차순으로 먼저 정렬 2. y좌표를 오름차순으로 정렬 📌 코드 n = int(input()) place = [list(map(int,input().split()..

Python/online judge 2024.01.29

백준 [3009.네 번째 점] | Python

✏️ 문제 https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net ✏️ 풀이방법 - 직사각형의 한 변은 같은 축에서 같은 좌표의 점이 2개 필요하다. (예를들어 x축에서 x좌표가 3인 점이 두개 필요하다는 것이다. y값은 서로 다르다.) 1. 이를 활용해서 직사각형의 4개의 점 중 x,y각 축에서 좌표가 같은 점이 2개씩 있는 것을 확인한다. 2. x좌표와 y좌표를 담는 리스트를 각각 생성 3. 리스트 안에 값이 1개만 있는 좌표의 값을 찾는다. 📌 코드 points = [list(map(int,input().split())) fo..

Python/online judge 2024.01.29