목록Baekjoon (177)
GitHubSeob

문제 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 문제풀이 처음에는 작은 수부터 모든 경우의 수를 돌면서 판별을 했더니 답은 맞았지만, 100456KB / 136ms라는 결과가 나왔다.. 그래서 다른 답들을 봤더니 큰 수가 나오자마자 중단하고, 작은 수부터 큰 수로 탐색하면서 중간 과정을 자르고 탐색을 하길래 참고하였다. 0부터 9까지의 수를 이용하여 해당 부등호에 맞게 배치하면 된다. 큰 숫자 먼저 찾을 것이기 때문에 9부터 0까지 순서대로 들어간 n..

문제 https://www.acmicpc.net/problem/15711 15711번: 환상의 짝꿍 환상의 나라 디디랜드에서는 인연의 증표로 끈을 하나씩 가지고 있다. 그들은 지극히 평범한 방법으로 이 끈을 이용하여 어떤 두 사람이 환상의 짝꿍인지 판단하는데, 두 사람의 끈을 서로 이 www.acmicpc.net 문제풀이 A+B의 최댓값은 4*10^12 이므로 구할 소수의 최댓값을 2*10^6으로 두고 했다. A+B=2, 3일 때는 소수의 합으로 나타낼 수 없으므로 NO를 출력한다. 적당한 범위 내에선 골드바흐의 추측이 맞으므로 A+B의 값이 짝수일 경우는 YES를 출력하면 된다. 값이 홀수가 나오려면 홀수+짝수의 경우의 수밖에 없다. 그리고 소수 중에 짝수인 수는 2밖에 없으므로 A+B-2의 값이 소수..

문제 https://www.acmicpc.net/problem/1016 1016번: 제곱 ㄴㄴ 수 어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수 www.acmicpc.net 문제풀이 정수 min은 굉장히 크다. 모든 정수에 대한 배열을 선언하긴 어려우므로 min과 max 차의 최댓값은 1,000,000인 점을 이용하여 min-min ~ max-min으로 배열을 만들면 된다. 1부터 10까지의 수중에서는 제곱 ㄴㄴ수가 1, 2, 3, 5, 6, 7, 10 이렇게 7가지이다. 1부터 10까지의 수중에서 제곱인 수 4, 9와 제곱인 수를 다른 값과 곱..

문제 https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제풀이 처음에는 2차원 배열을 이용하여 풀었는데 시간 초과가 나서 다른 풀이를 참고했다. 퀸은 가로, 세로, 대각선으로 이동이 가능하다. 현재 위치에 퀸을 두면 가로줄에는 더 이상 퀸을 둘 수 없다는 점을 이용하여 1차원 배열을 y축 배열로 사용했다. (board[y]가 0이면 (y, 0)에 퀸을, 1이면 (y, 1)에 퀸을 둔다는 의미이다.) DFS를 사용했고, 현재 y위치를 인자로 넘겨주었다. 퀸의 x..

문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제풀이 'R'을 입력받을 때 마다 reverse를 하면 시간초과가 난다. 'D'를 입력받을때 마다 vector.erase로 지웠더니 시간초과가 난다. deque를 사용하지 않고 시작 인덱스인 start, 끝 인덱스인 end를 이용하여 풀었다. getline과 istringstream으로 쉼표로 구분하여 string을 자르고 int형 vector에 입력한다. rev라는 변수를 두어 'R'을 입력받으면 * -1을 하여 거꾸로 됐는지, 정상적으로 됐는..

문제 https://www.acmicpc.net/problem/21942 21942번: 부품 대여장 첫 번째 줄에 부품 대여장에 작성된 정보의 개수 $N$, 대여기간 $L$, 벌금 $F$이 공백으로 구분되어 주어진다. 대여기간 형식은 DDD/hh:mm으로 DDD는 일, hh는 시간, mm은 분을 의미한다. (000/00:00 는 주어 www.acmicpc.net 문제풀이 날짜와 시간을 입력받으면 모두 분으로 바꾼다. string을 substr을 이용하여 각각 월, 일, 시, 분을 파싱 하고 stoll을 통해 long long으로 형 변환을 한다. map을 이용한다. key부분은 pair을 이용해 {이름, 부품}을 입력받고, value에는 시간을 입력받는다. map[{이름, 부품}]값이 비어있으면 빌린 시..

문제 https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 문제풀이 multiset을 이용하여 풀었다. 입력받으면 multiset에 집어넣고 홀수번째 수를 입력받을 때마다 iterator을 이용하여 한 칸씩 중앙값을 가리킬 때까지 iterator를 증가시키고 해당 값을 answer에 push 한다. 모든 입력을 받았으면 answer의 크기와 answer의 모든 값들을 출력한다. 코드 #include #include #in..

문제 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제풀이 map과 multiset을 이용한다 multiset은 난이도가 같으면 문제 번호가 높은 순, 난도가 다르면 난이도가 높은 순부터 낮은 수로 정렬하도록 cmp를 따로 만들었다. (내림차순) 문제 번호와 난이도를 입력받으면 multiset, map에 집어넣는다. recommend 1을 입력받으면 iterator가 multiset의 처음을 가리키게 되고 문제..

문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제풀이 mapbook을 선언한다. string인 key부분에는 책의 이름을, int인 value 부분에는 책의 개수를 입력한다. 입력을 받으면 book[책 이름]++을 하여 해당 책의 개수를 1 증가시킨다. 그다음 book[책 이름]의 값과 max_count 값을 비교하면서 max_count값을 최댓값으로 유지한다. map은 알아서 정렬되므로 iterator를 이용해 book의 처음..