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

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 DFS를 이용하면 쉽게 풀 수 있는 문제이다. 2차원 bool형 벡터 visited를 이용하여 'X'인 곳을 모두 true로 바꾼다. int max_day; void DFS(int y, int x) { for (int idx = 0; idx = N..

문제 https://www.acmicpc.net/problem/2641 2641번: 다각형그리기 모눈종이에 다각형을 그리려고 한다. 그리는 방법은 모양수열로 표시된다. 모양수열은 1과 4사이의 숫자가 연속되어 나열된 것으로 1은 오른쪽으로, 2는 위쪽으로, 3은 왼쪽으로, 4는 아래쪽으로 www.acmicpc.net 문제풀이 구현문제이다. DFS로 풀었다. 모양수열의 길이는 최대 50이므로 100*100 크기의 2차원 배열을 선언하여 풀었다. 문제의 예시를 보면 모양을 회전 또는 뒤집어서는 안 되며, 주어진 모양과 같아야 한다. DFS함수로 2차원 배열에 입력받은 표본 모양수열의 값들대로 이동하면서 값을 true로 바꾼다. DFS함수가 종료되면 M번만큼의 표본 모양수열과 같은 길이의 모양수열의 값들을 입..

문제 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제풀이 문제를 대충 봤을 때는 블록을 이리저리 회전하고, 대칭시켜서 모든 칸을 확인해야 되나 싶었다. 문제를 자세히 보니 5가지 블록은 모두 4칸으로 되어있고, 5가지를 제외하고 4칸으로 표현할 수 있는 블록이 더 있을까 생각을 해봤는데 당장 떠오르는 모양이 없었다. 그래서 모든 칸에서 DFS를 돌려 모든 경우를 탐색해 보면 되겠다 싶었다. DFS함수는 인자로 y, x, 그리고 현재 탐색한..

문제 https://www.acmicpc.net/problem/13905 13905번: 세부 첫 번째 줄에는 섬에 존재하는 집의 수 N(2≤N≤100,000)와 다리의 수 M(1≤M≤300,000)이 주어진다. 두 번째 줄에는 숭이의 출발 위치(s)와 혜빈이의 위치(e)가 주어진다. (1≤s, e≤N, s≠e). 다음 M개의 줄 www.acmicpc.net 문제풀이 크루스칼 알고리즘으로 풀었다. 구조체를 선언하여 섬 1, 섬 2, 무게 제한을 변수로 둔다. 부모를 찾는 find, 두 노드 같은 사이클로 만드는 Union, 두 노드가 같은 사이클인지를 판별하는 isUnion 함수를 구현한다. 모든 입력을 다 받았으면, 정렬을 해야 한다. 가장 작은 길이로 시작점과 도착점을 연결하는 것이 아닌, 최대 개수를..

문제 https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제풀이 지원자 A가 합격하려면 나머지 모든 지원자의 성적과 비교했을 때, A의 서류성적 B의 서류 등수, A의 면접 등수 > B의 면접 등수만 아니면 된다. 처음에는 이중 반복문을 이용해서 풀었는데 시간초과가 나서 투 포인터 느낌으로 풀었다. 먼저 가장 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 투 포인터를 이용해 문제를 풀었다. sum에 left부터 right까지의 값을 더하면서 값이 k가 될 때 answer에 저장한 값과 비교하면서 값을 갱신한다. sum이 k보다 작을 때는 sequence[right]의 값을 sum에 더하고, sum이 k일 때는 answer에 저장된 부분 수열의 길이보다 현재 길이가 짧을 경우 갱신한다. sum이 k보다 클 때는 sequence[lef..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 큐를 pop 하고 다른 큐로 push 하는 작업을 묶어서 횟수를 센다. 큐 두 개를 붙여 한 벡터처럼 생각하고 투포인터를 이용해서 문제를 풀었다. 투 포인터를 이용해 left, right부분을 설정하고 합을 구하면서 비교한다. 합이 K보다 크면 left부분을 sum에서 빼고, 합이 K보다 작으면 right부분을 sum에 더한다. 이러면서 모든 경우를 탐색한다. 만약 sum이 K와 ..
문제 https://www.acmicpc.net/problem/18917 18917번: 수열과 쿼리 38 3번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4]이다. 6번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4, 1]이다. 10번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1]이다. www.acmicpc.net 문제풀이 문제에는 4가지 쿼리가 있다. 1은 추가, 2는 제거, 3, 4는 값을 출력하는 쿼리이다. 문제를 보면 배열의 몇 번째 값을 출력하거나 값이 어디에 있는지 등등 배열이 필요한 경우가 없다. 따라서 값을 더해주는 sum과 xor연산을 하는 XOR의 값만 구하면 된다. 쿼리 1은 sum에 x를 더하면 된다. XOR에 x를 xor연산하면 된다. 쿼리 2는 sum에서 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 해당 그림을 2차원 벡터로 표현할 것이다. 벽돌들을 맨 왼쪽으로 모두 당긴 모양을 생각하면 된다. 맨 위 맨 왼쪽 벽돌부터 시작하여 숫자는 아래로, 오른쪽으로, 왼쪽 대각선으로 이동하며 커진다. for (int y = 0; y < N; ++y) { board[y] = vector(y + 1, 0); max_size += y + 1; } 맨 위줄은 y=0, 개수는 1개이다. 그다음 줄..