백준 문제
-
백준 1874 (스택 수열) c++백준 문제 2022. 7. 20. 19:26
문제 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 으로 이루어진 수열이 주어지면 1부터 n 까지 차례대로 스택에 넣어 push와 pop을 통해 주어진 수열을 만들 수 있는지 확인하는 문제 입니다. 주어진 수열을 만들 수 있으면 push할 때마다 '+'를 출력하고 pop할 때 마다 '-'를 출력합니다. 만약 주어진 수열을 만들 수 없으면 NO를 출력하고 종료합니다. 정상적으로 주어진 수열을 만들 수 있으면 구현하는데..
-
백준 2108 (통계학) c++백준 문제 2022. 7. 19. 20:13
문제 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N이 주어지고 N개의 수를 입력하면 위의 4가지를 모두 구하는 것입니다. N은 무조건 홀수로 주어집니다. 1) 산술평균은 먼저 모든 N개의 수의 합을 구해야 하므로 처음에 입력 받을 때 부터 sum 이라는 int형 변수에 누적으로 더해주었습니다. 문..
-
백준 10989 (수 정렬하기 3) c++백준 문제 2022. 7. 12. 14:05
문제 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 단순히 수를 오름차순으로 정렬하는 문제입니다. 하지만 틀렸습니다... 문제의 제한사항을 보면 메모리 제한이 8 MB 입니다. 또한 숫자가 들어올 수 있는 개수는 10000000개 입니다. 따라서 int 형으로 수를 받게 되면 최악의 경우 4 byte * 10^7 = 40MB 의 크기가 됩니다. 수의 개수는 100000000이지만 수의 범위는 10000까지 입니다. 따라서 수의 범위의 해당하는 배열의 크기를 잡고 입력되는 수의 index에 다가 세어줍니다. 이제 차례대로 출력해주..
-
백준 1436 영화감독 숌 c++백준 문제 2022. 7. 11. 14:17
문제 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 666이 들어가는 숫자중 n번째 숫자를 찾아 출력하는 문제입니다. 예를 들어 n = 1이면 666이고 n = 2이면 1666입니다. 2666 3666 4666 5666 6660 6661 6662 . . 처음에 접근했을 때는 숫자를 1부터 증가시켜 각 자리를 검사해 연속으로 6이 3번 나오면 찾게 코딩을 해보았지만 말이 안됐습니다. 그러다 다른 블로그글을 참고하여 풀게 되었습니다. 간단히 말하면 1부터 하나씩 증가하면서 해당 숫자에 666이 들어있는지 판단..
-
백준 1451 (직사각형으로 나누기) c++백준 문제 2022. 3. 16. 20:42
문제 1451번: 직사각형으로 나누기 첫째 줄에 직사각형의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 직사각형에 들어가는 수가 가장 윗 줄부터 한 줄에 하나씩 M개의 수가 주어진다. N과 M은 50보다 작거나 같은 자연수이 www.acmicpc.net 행 n과 열 m이 주어지면 n*m 직사각형을 세등분으로 나누어 세 직사각형 넓이의 곱의 최대를 출력해주면 됩니다. 각 직사각형의 넓이는 각 직사각형의 포함되는 n*m 이차원 배열의 인덱스 값의 합입니다. 저는 처음에 생각했을 때 세 직사각형의 넓이의 곱이 최대로 될려면 각 직사각형이 전체 n * m 넓이의 평균에 가까울 수록 넓이가 커진다고 생각했습니다. 따라서 1)번으로 생각했습니다. 1) 모든 수를 더하면서 평균값에 가깝게 직사각형을 묶음 ..
-
백준 15811 (복면산) c++백준 문제 2022. 3. 6. 15:59
문제 15811번: 복면산?! 복면산이란 수학 퍼즐의 일종으로, 어떤 계산식의 각 숫자들을 특정 문자로 바꾸면 각 문자가 어떤 숫자인지 맞추는 퍼즐이다. 대표적으로 SEND+MORE=MONEY가 있다. SEND + MORE ------ MONEY S=9, E=5, N=6, D=7, www.acmicpc.net 18자리 이하인 영어 대문자 문자열 3개가 주어지는데 첫번째와 두번째로 주어진 영어 대문자에 서로 겹치지 않는 숫자를 집어넣어 그 둘을 합친게 세번째로 주어진 문자열과 동일하면 YES를 출력하고 그렇지 않으면 NO를 출력하는 문제입니다. 예를 들어 문자열이 SUN FUN SWIM 이라고 주어지면 SUN = 067 FUN = 867 라는 숫자를 대입할 수 있습니다. 그 둘을 합치면 SWIM = 093..
-
백준 1655 (가운데를 말해요) c++백준 문제 2022. 3. 3. 00:54
문제 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 정수의 개수 n개가 한개씩 주어집니다. 주어지는 대로 중간값을 출력하면 되는 문제입니다. 정수의 개수가 짝수이면 중간값이 2개 이므로 둘중 작은 값을 출력하면 됩니다. 예를 들어 n이 5이고 처음에 1이들어오면 1을 출력하고 또 3이 들어오면 {1, 3} 중에 1이 작으므로 1을 출력하고 또 5가 들어오면 {1, 3, 5} 이므로 3을 출력하는 식으로 생각해주면 됩니다. naive하게 생각해보면 n의 범위가 100000까지 이고 계속 숫자가..