baekjoon 37

백준 [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

백준 [1181.단어 정렬] | Python

✏️ 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net ✏️ 풀이방법 1. 단어의 입력을 담을 리스트(words)와 정렬된 단어를 담을 리스트(sortword)를 생성한다. 2. 중복된 단어는 하나만 남기기위해 집합(set)자료형으로 중복을 제거한다. 3. 사전순으로 정렬하기 위해 sort()메소드를 사용한다. 4. 문자열의 길이는 50이 넘지 않는 것을 활용해서 문자열의 길이를 반복을 통해 확인해서 길이가 짧은 순으로 리스트(s..

Python/online judge 2024.01.15

백준 [2745.진법 변환] | Python

✏️ 문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net ✏️ 풀이방법 - 257를 8진수로 변환하면 다음과 같이 계산한다. 1. 문자열 n의 문자 하나씩을 num에서 찾아 그에 해당하는 인덱스를 가져와서 담는 리스트(newn)를 생성 2. 진법으로 변환하는 제곱의 횟수가 하나씩 줄어드니까 -1씩 감소하는 for문으로 연산 📌 코드 n, b = input().split() num = ['0','1','2','3','4','5','6','7','..

Python/online judge 2024.01.12

백준 [2750.수 정렬하기] | Python

✏️ 문제 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net ✏️ 풀이방법 1. 리스트에 값을 받아서 sort()메소드 또는 sorted()함수로 정렬 📌 코드 n = int(input()) list1 = [] for i in range(n): list1.append(int(input())) list1.sort() #메소드를 사용해서 리스트 정렬 for i in range(n): print(list1[i]) n = int(input()) list1 = ..

Python/online judge 2024.01.10

백준 [11653.소인수분해] | Python

✏️ 문제 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net ✏️ 풀이방법 1. 정수n을 소수 중 가장 작은 수 2로 나누는 반복을 수행하는데 2로 나눠떨어지지 않을 때 다음 숫자로 +1을 해서 나눈다. 📌 코드 n = int(input()) i = 2 while True: if n == 1: print("") break if n % i == 0: n = n//i print(i) else: i +=1 📌 결과 # 입력 72 #출력 2 2 2 3 3 # 입력 3 #출력 3 # 입력 6 #출력 2 3 # 입력 9991 #출력 97 103 🤔 시행착오.1 n = int(..

Python/online judge 2024.01.10

백준 [2581.소수] | Python

✏️ 문제 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net ✏️ 풀이방법 1. 특정범위안의 소수를 찾아서 리스트(prime)에 담는다. 2. 리스트(prime)의 총합을 구한다. 3. 소수가 없는 경우에는 -1을 출력해야하기 때문에 리스트(prime)의 길이가 0이면 소수가 없는것을 활용했다. 📌 코드 m = int(input()) n = int(input()) # m이상 n이하의 자연수 nums = [int(i) for i in range (m,n+1)..

Python/online judge 2024.01.10

백준 [1978.소수 찾기] | Python

✏️ 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net ✏️ 풀이방법 1. 리스트(num)에 소수인지 확인할 수를 입력 2. 1은 소수가 아니기 때문에 pass 3. 리스트(prime)를 선언하여 소수인지 판별하는 수의 약수를 추가 4. 소수는 1과 자기자신만을 약수로 가지는 수이기 때문에 리스트(prime)의 길이가 2이면 소수 📌 코드 n = int(input()) num = list(map(int,input().split())) cnt = 0 for i in range(n): prime = [] if n..

Python/online judge 2024.01.04