분류 전체보기

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제분석 분류 자료구조, 우선순위 큐 문제설명 배열에 정수 x(x ≠ 0)를 넣는다. 입력에서 0이 주어지는 횟수만큼 답을 출력한다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 만약 배열이 비어 있는 경우인데 절댓값이 가장 작은 값을 출력하라고 한 경우..
https://www.acmicpc.net/problem/2999 2999번: 비밀 이메일 정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다. 정인이가 만든 행렬은 다음과 www.acmicpc.net 문제 소스 코드 문제 풀이 리스트형식으로 입력받고, 먼저 for문과 if문을 이용하여 R(행)과 C(열)을 구합니다. R개의 빈리스트가 들어있는 이차원 리스트를 만들고, 0행 0열 -> 1행 0열 -> ...->5행 0열-> ...->R행 C열 순으로 입력값을 넣습니다. 그리고 0행 0열 -> 0행 1열 -> ...-> 0행 5열-> R행 C열 순으로 ..
1. 문제 11179번: 2진수 뒤집기 희연이는 스웨덴으로 이사하여 현재 학교를 다니고 있다. 1학년 교육과정은 중국에서 배웠고, 스웨덴과 중국 두 나라의 교육과정은 완전히 다르다. 희연이는 수학을 좋아한다. 하지만 지금은. www.acmicpc.net 입력받은 n을 2진법으로 나타낸 뒤, 2진법을 나타낸 수를 뒤집는다. 그리고 그 수를 다시 10진법으로 변환시켜 출력하는 문제이다. 2. 코드 n=int(input()) arr=bin(n) #10진수 n을 2진수로 변환 , arr타입은 str arr=arr[2:] #0b를 없애주자! 3번째 수부터 출력 arr_reverse=arr[::-1] #뒤집어주기 num=int(arr_reverse,2) print(num) 3. 문제풀이 - 우선 2진수와 10진수 ..
백준 17298 오큰수 Intro Solution 결과를 출력할 리스트를 미리 만들고, -1로 가득 채워 초기화한다. 주어진 수열의 수를 인덱스와 함께 스택에 저장한다. 수열을 순회하며 스택의 꼭대기에 있는 수와 비교한다. 꼭대기의 수가 더 클 경우, 결과 리스트에 그 값을 저장한다. Code def solve(): n = int(input()) A = list(map(int, input().split())) stack = [] nge = [-1]*n for i, a in enumerate(A): while stack: if stack[-1][1] < a: j, _ = stack.pop() nge[j] = a else: break stack.append((i, a)) print(*nge) solve()
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제분석 N명의 사람이 원을 이루면서 앉아있을 때, K번째 사람을 모든 사람이 제거될 때까지 계속 반복하는 문제이다. 코드 from collections import deque n, k = map(int, input().split()) queue = deque(range(1, n + 1)) answer = [] while queue: for _ in range(k-1): queue.append(queue.popleft()) answer.append(queue.popleft()) print..
https://www.acmicpc.net/problem/2164 [문제 해석] 본 문제는 큐를 사용해 푸는 문제로, N장의 카드를 입력해 1~N의 수를 큐에 입력하여, Q를 주어진 조건에 맞게 pop, push를 활용해 푸는 문제이다. [소스코드] from collections import deque N = int(input()) deque = deque([i for i in range(1, N+1)]) while(len(deque) >1): deque.popleft() move_num = deque.popleft() deque.append(move_num) print(deque[0]) [문제 해결] deque를 사용하여, deque의 배열 길이가 1보다 클 때 반복하도록 한다. 가장 왼쪽에 있는 원소..
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 문제 분석 나는 이 문제를 정상적인 체스판과 '다른' 부분들의 개수를 찾는 것이라고 생각했다. 여기서 정상적인 체스판이란 8 x 8의 W부터 시작하는 체스판과 B부터 시작하는 체스판, 2 종류이다. 프로그래밍이니 B와 W라는 표현은 적합하지 않으므로, 각각 0과 1로 치환하여 2차원 벡터를 만들었다. => 이 두 벡터는 chess1, chess2라 명명한다. 멀쩡한 체스판과 '다른' ..
2346번: 풍선 터뜨리기 (acmicpc.net) 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 문제 해석 N개의 풍선이 원형으로 놓여있고 안에는 숫자가 적혀있다. 풍선을 터뜨린 후 안의 숫자만큼 이동 후 다시 풍선을 터뜨리는 식으로 진행된다. 코드 문제 풀이 원형이기 때문에 앞뒤로 빼고 넣기 위해 자료구조로 덱을 사용하였다. 풍선 번호를 나타내는 덱과 풍선 안의 숫자를 나타내는 덱을 따로 que와 paper의 이름으로 선언해주었다. 처음 for문을 통해 덱에 알맞은 숫자들은 넣어 주고 ..
2729번: 이진수 덧셈 (acmicpc.net) 2729번: 이진수 덧셈 이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십 www.acmicpc.net 문제분석 분류 수학 구현 사칙연산 문제설명 입력 출력 소스코드
https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 문제분류 자료구조, 우선순위큐, 덱 문제분석 정해진 구간 L에 대하여 최솟값을 구하는 문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; impor..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제분석 분류 큐 문제설명 N장의 카드를 입력한다. 1부터 N까지의 수를 큐에 입력한다. Q를 주어진 조건에 맞게 pop,push,pop 활용한다. 입력 6 출력 4 코드 #include #include using namespace std; int main() { queueque; int N; cin >> N; for(int x =1 ; x 1) //1개가 남을 때 까지 { que.pop(); q..
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 분석 1부터 n까지의 수를 스택에 넣어놓고 입력받은 수열을 만들기 위해 push와 pop연산을 어떻게 수행해야 하는지 출력하는 문제다. push연산을 수행할 땐 +, pop연산을 수행할 땐 -를 출력한다. 입력받은 수열을 만들 수 없는 경우에는 NO를 출력한다. 코드 #include #include #inclu..
KauKoala
'분류 전체보기' 카테고리의 글 목록 (106 Page)