baekjoon 37

백준 [11728.배열 합치기] | Python

✏️ 문제 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net ✏️ 풀이방법 1. 배열 A,B를 하나의 리스트에 append가 아닌 extend로 담는다. 📌 코드 n,m = map(int,input().split()) sumlist = [] for i in range(2): sumlist.extend(list(map(int,input().split()))) sumlist.sort() print(*sumlist)..

Python/online judge 2024.03.08

백준 [7785.회사에 있는 사람] | Python

✏️ 문제 https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net ✏️ 풀이방법 1. 집합(log) 안에 없는 이름이면 새로 추가하고, 존재하는 이름이면 해당 이름을 삭제 📌 코드 n = int(input()) log = set({}) cnt = 0 while True: i = input().split()[0] if i not in log: log.add(i) else: log.remove(i) cnt +=1 i..

Python/online judge 2024.03.07

백준 [9093.단어 뒤집기] | Python

✏️ 문제 https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net ✏️ 풀이방법 1. sentence에 리스트로 각 문자열을 담는다. 2. 리스트의 원소 하나씩 거꾸로 출력한다. 📌 코드.1 -문자열 슬라이싱을 활용한 풀이 t = int(input()) sentence = [list(map(str,input().split())) for _ in range(t)] for i in range(t): resentence = [] for j in ra..

Python/online judge 2024.02.16

백준 [1152.단어의 개수] | Python

✏️ 문제 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net ✏️ 풀이방법 - 3가지의 풀이 방법으로 제출했다. 1. 공백을 count하는 경우 1) strip()메소드로 앞뒤 공백을 제거한 문자열에서 공백을 count하고 +1해서 단어의 개수를 구한다. 2. 단어를 count하는 경우 2) split()메소드로 반환된 리스트에서 단어의 개수(=리스트의 길이)를 구한다. 3) split()메소드로 반환된 리스트를 리스트에 담아서 원소의 개수..

Python/online judge 2024.01.31

백준 [1789.수들의 합] | Python

✏️ 문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net ✏️ 풀이방법 1. n은 자연수이므로 1부터 시작해서 while문으로 무한루프를 돌리면서 total의 자연수 누적합을 담는다. 2. 누적된 합이 s와 크거나 같을 때 while문을 종료한다. 3. 누적된 합 total이 입력한 s와 같으면 해당 n을 출력하고 그렇지 않으면 자연수n에서 하나 뺀 수를 출력한다. 📌 코드 s = int(input()) n = 1 total = 0 while True: total += n if total >= s: break n += 1 if total == s: print(..

Python/online judge 2024.01.29

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

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