목록분류 전체보기 (370)
GitHubSeob

문제 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://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 문제풀이 완전탐색으로 문제를 풀었다. visited벡터를 이용해 idx번째 던전을 방문했는지 판별을 한다. 방문을 하지 않은 던전이라면 해당 던전을 무시하고 다음 던전을 탐색하기 위해 DFS를 실행한다. 또는 해당 던전을 방문할 것이라면 현재 피로도가 던전의 최소 피로도 이상인지 확인을 하고 DFS를 실행한다. 모든 던전을 방문 했다면 answer값..

문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제풀이 스택의 느낌으로 문제를 풀었다. number의 크기만큼 반복문을 돌면서, 현재 해당하는 숫자를 answer에 더하기 전에 answer의 맨 뒤에 있는 숫자보다 큰 숫자를 만나면 조건을 판단한다. 현재 해당하는 숫자를 포함한 남은 개수가 만들어야 되는 target_size보다 크다면 answer의 끝 숫자를 삭제한다. 그다음 조건에 맞지 않아 반복문이 종료됐으면 현재 숫자를 answer의 끝에 더해준다. 반복문이 종료됐을 때 만약 answer의 크기가 target_size보다 크다면 target_size의 크기가 될 때까지 a..

문제 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 문제풀이 yellow의 약수를 구한다. 각각의 약수에 +2를 더하고 곱한 값이 전체 블록의 수가된다. 이 값이 brown + yellow의 값과 같아지면 된다. 가로가 세로 길이 이상이어야 하고, idx는 1부터 시작하므로 몫을 가로로 둔다. 약수를 구하면서 몫+2, 나눈 수+2의 곱이 총 격자의 수와 같으면 그게 가로, 세로의 길이다. 코드 #incl..

문제 https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 문제풀이 오름차순으로 정렬을 하고 첫 번째 인덱스부터 탐색한다. 새로운 값을 발견했을 경우, 답을 구하지 못한 상태이므로 이전 값들은 무조건 현재 값보다 작다. 따라서 문제의 조건에서 나머지 논문이 h번 이하 인용되었다는 조건은 필요 없어진다. 그러면 남은 조건은 h번 이상 인용된 논문이 h개 이상인 최댓값 h를 구하는 것이..

문제 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://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 문제풀이 스택을 이용하여 풀었다. 괄호의 종류가 세 가지나 있다. s의 최대 크기가 많이 안 커 보이므로 회전 대신 s를 덧붙이고 idx만 늘리면서 회전의 역할을 한다. 문자열을 바꿀 때마다 스택을 초기화한다. 여는 괄호가 들어오면 스택에 push 한다. 닫는 괄호가 들어오면 스택이 비었는지, 안 비었는지를 확인한다. 스택이 비어있다면 짝이 맞을 수 없으므로 바로 break를 한다. 스택이 비어있지 않다면 짝이 맞는 괄호인지 판별해야 한다. ')'가 들어오면 '(', '{'가 들어오면 '}', '['가 들어오면 ']'. (아스키코드 ..

문제 https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 문제풀이 A가 B보다 항상 작다는 조건이 없어서 A가 B보다 클 경우 swap을 했다. 대진표에서 A가 번호가 작으므로 B와 붙을 경우 왼쪽에 A 오른쪽에 B가 된다. 따라서 만나는 경우에는 A를 2로 나눈 나머지가 1, A+1은 B인 경우밖에 없다. a, b가 홀수인 경우에는 +1을 하고 2로 나누고, 그 외에는 그냥 2로 나눈다..

문제 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제풀이 DFS, BFS에서 기본적인 문제이다. queueq를 이용하여 q[0]에는 y좌표, q[1]에는 x좌표, q[2]에는 이동한 칸수의 정보를 입력한다. q가 빌 때까지 반복하여 while문을 탈출하면 목표지점에는 닿을 수 없으므로 -1을 return 하면 된다. 현재 y, x좌표에서 상, 하, 좌..