반응형

백준 13

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

https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 안녕하세요, 백준 3009번 문제 '네 번째 점' 문제 풀이 하겠습니다. 이 문제는 간단한 아이디어를 통해 풀 수 있는 문제이지만, 리스트나 문자열에서 특정 조건을 만족하는 요소를 찾는 기술을 연습하는 데에 좋습니다. 문제 이해 문제에서 직사각형의 세 꼭지점의 좌표를 알고 있습니다. 네 번째 점의 좌표를 찾는 것이 이 문제의 목표입니다. 각 좌표는 절대값이 1000보다 작거나 같은 정수입니다. 문제 접근 방식 이 문제를 풀기 위한 핵심 아이디어는 '직사각형의 꼭지점 중에서, 같..

BOJ 2023.08.02

백준 1764번 - 듣보잡 [Python]

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 안녕하세요, 오늘은 파이썬을 사용하여 백준 1764번 문제인 '듣보잡' 문제를 해결하는 방법에 대해 이야기해보려고 합니다. 문제 이해 이 문제는 두 명단에서 중복되는 이름을 찾는 것입니다. 첫 번째 명단에는 듣도 못한 사람들의 이름이 있고, 두 번째 명단에는 보도 못한 사람들의 이름이 있습니다. 우리의 목표는 이 두 명단에서 중복되는 이름을 찾아 출력하는 것입니다. 초기 접근 처음에는 아래와 같..

BOJ 2023.07.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 안녕하세요, 오늘은 백준 2798번 문제인 '블랙잭'에 대한 풀이를 공유하려고 합니다. 문제 이해 이 문제는 N개의 숫자 카드 중에서 3장을 고르는 방법 중에서 합이 M을 넘지 않으면서 M과 최대한 가까운 카드 3장을 찾는 것입니다. 문제 접근 방식 이 문제는 브루트 포스 문제로, 가능한 모든 경우의 수를 다 따져보는 방식으로 접근하였습니다. 총 N개의 카드 중에서..

BOJ 2023.07.28

백준 10810번 - 공 넣기 [Python]

https://www.acmicpc.net/problem/10810 10810번: 공 넣기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 www.acmicpc.net 안녕하세요, 오늘은 백준 10810번 문제에 대한 해결 방법을 공유하려고 합니다. 이 문제는 주어진 규칙에 따라 바구니에 공을 넣는 문제로, 간단한 구현 방법으로 해결할 수 있습니다. 문제 이해 일렬로 나열된 N개의 바구니가 있습니다. 바구니에는 공을 넣을 수 있고, 바구니에 들어있는 공은 바구니에 적혀있는 번호와 같습니다. 현우는 바구니에 공을 M개 넣는데, 이때 바구니에 공을 넣는 방법은 다..

BOJ 2023.07.27

백준 10989번 - 수 정렬하기 3 [python]

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 안녕하세요, 오늘은 백준 10989번 '수 정렬하기 3' 문제에 대한 Python 풀이를 공유하려 합니다. 문제 이해 해당 문제는 주어진 수열을 오름차순으로 정렬하는 문제입니다. 이 문제에서 가장 중요한 점은 입력 수의 개수가 최대 10,000,000개라는 것입니다. 이렇게 많은 수의 데이터를 처리하려면 효율적인 메모리 사용과 알고리즘이 필요합니다. 문제 접근 방식 처음에는 일반적인 정렬 문제처럼 입력 받은 수를 리..

BOJ 2023.06.21

백준 1475번 - 방 번호 [python]

https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 안녕하세요, 오늘은 백준 1475번 '방 번호' 문제에 대한 Python 풀이를 공유하려 합니다. 이 문제는 주어진 방 번호를 만들기 위해 필요한 숫자 세트의 최소 개수를 구하는 문제로, 6과 9는 서로 뒤집어서 사용할 수 있다는 특징이 있습니다. 문제 이해 이 문제는 주어진 방 번호를 만들기 위해 필요한 숫자 세트의 최소 개수를 구하는 문제입니다. 숫자 세트는 0부터 9까지의 숫자가 하나씩 들어있고, 6과 9는 서로 뒤집어서 사용할 수 있다는 특징이 있습니다. 문제 접근 방식 이 문제를 풀기 ..

BOJ 2023.06.13

백준 17608번 - 막대기 [python]

Python 코드 import sys def input(): return sys.stdin.readline().rstrip() n = int(input()) stack = [] # 막대기 높이 입력받아 stack에 저장 for _ in range(n): h = int(input()) stack.append(h) cnt = 0 # 보이는 막대기의 개수를 카운트하기 위해 초기화 max_h = 0 # 현재 기준으로 가장 높은 막대기의 높이를 저장하기 위해 초기화 # 스택 오른쪽부터 왼쪽끝까지 탐색해서 보이는 막대기 개수 카운트 for i in range(n-1, -1, -1): if stack[i] > max_h: cnt += 1 max_h = stack[i] print(cnt) #보이는 막대기 출력 Pyth..

BOJ 2023.03.18

백준 1436번 - 영화감독 숌 [python]

Python 코드 n = int(input()) # 입력값 N cnt = 0 # "666"이 들어가는 수 카운트 변수 num = 666 # 시작 숫자 while True: if "666" in str(num): # "666"이 들어가면 cnt += 1 # 카운트 증가 if cnt == n: # 카운트가 N과 같아지면 print(num) # 해당 숫자 출력 break # 반복문 종료 num += 1 # 다음 숫자로 이동 Python 코드 풀이 1. 코드에 대한 전체적인 풀이 "666"이 들어가는 숫자 중에서 N번째로 작은 수를 출력하는 문제에 대한 저의 해결 방법을 소개하겠습니다. 이 문제를 해결하려면 모든 수를 탐색하면서 "666"이 들어가는 수를 찾아야 합니다. 이를 위해 저는 브루트포스 알고리즘을 사..

BOJ 2023.03.18

백준 1874번 - 스택 수열 [python]

Python 코드 n = int(input()) nums = [] # 입력 받은 수열 담을 리스트 stack = [] # 스택 자료구조를 구현한 리스트 res = [] # push와 pop 연산을 저장할 리스트 num_idx = 0 # 수열 현재 위치 for i in range(n): num = int(input()) nums.append(num) print(nums) for i in range(1, n+1): # stack에 1~n 까지 숫자를 차례대로 push, push 수행 할때마다 'res'에 '+' 추가 stack.append(i) res.append('+') while stack and stack[-1] == nums[num_idx]: # stack이 비어있지 않고, stack의 top 값이 ..

BOJ 2023.03.18

백준 10799번 - 쇠막대기 [python]

Python 코드 s = input() # 괄호가포함된 문자열 입력 받기 stack = [] # 스택 초기화 cnt = 0 # 쇠막대기 조각 개수 초기화 for i in range(len(s)): if s[i] == '(': # 열린 괄호의 경우 스택에 push stack.append(s[i]) else: # 닫힌 괄호인 경우 stack.pop() # 스택에서 pop if s[i-1] == '(': # 직전이 열린 괄호였을 경우, (레이저인 경우) cnt += len(stack) # 쇠막대기 조각 개수 추가 else: # 직전이 닫힌 괄호 였을 경우, (쇠막대기 끝인 경우) cnt += 1 # 쇠막대기 조각 개수 추가 print(cnt) # 쇠막대기 조각 개수 촐력 Python 코드 풀이 이번 문제는 레..

BOJ 2023.03.17
반응형