목록Programmers/Level 2 (79)
GitHubSeob

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 누적합으로 풀었는데 다 풀고 다른 풀이를 보니 DP로 푼 사람이 많았다... 2차원 벡터의 누적합을 구한다. 먼저 x 증가하는 방향으로 누적합을 구한 뒤, y가 증가하는 방향으로 누적합을 구한다. 표의 열 또는 행 중 작은 값이 답의 최댓값이 될 수 있으므로, 해당 값부터 시작한다. 한 변의 길이가 len인 정사각형 구간을 반복문을 통해 값을 구한다. 만약 해당 구간의 누적합이 le..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 앉을 수 있는 경우의 수는 중심으로부터 (2m, 3m), (2m, 4m), (3m, 4m) 이렇게 세 가지가 있다. 따라서 idx번째 무게의 2/3, 1/2, 3/4의 무게를 찾으면 된다. 개수가 int형의 범위를 넘어가므로 map을 선언할 때 int, long long형으로 선언한다. 먼저 무게를 빠르게 찾기 위해 unordered_map에 모든 몸무게를 입력한다. 무게가 같은 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 처음에는 간단하게 next_permutation을 이용하여 구하려고 했지만 시간초과로 인해 방법을 바꿨다. 조합의 가지 수를 구하는 경우를 생각하면 된다. 맨 앞자리는 n! 의 사람이 올 수 있다. 그다음 자리는 (n-1)! 의 사람이 올 수 있다. 문제의 예제를 보면 n이 3이고 k가 1일 때 [1, 2, 3]이다. k가 2일 때는 [1, 3, 2]이고, k가 3일 때는 맨 앞자리..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 다익스트라 문제이다. 시작마을은 1번 마을이며, 마을 개수에는 1번 마을도 포함시켜야 한다. 2차원 벡터에 pair을 집어넣어 roads [마을 1] = {마을 2, 거리}의 형태로 나타낸다. 문제에서 주어진 road를 탐색하면서 roads에 위의 형태로 값을 입력한다. 양방향 간선이므로 roads[마을 1] = {마을 2, 거리}, roads[마을 2] = {마을 1, 거리}의 두..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/135807# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 카드들에 적힌 모든 숫자를 나눌 수 있는 숫자는 최대공약수를 의미한다. 배열 A의 최대공약수를 구해 배열 B의 원소들을 나눌 때 나누어지지 않는 숫자를 구한다. 배열 B도 마찬가지로 최대공약수를 구해 배열 A원소들을 나눌 때 나누어지지 않은 숫자를 구한다. 두 숫자 중 큰 값을 반환하면 된다. 만약 최대공약수로 나누어지는 숫자가 있으면 해당 a값은 0이 된다. int getGCD..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 완전탐색으로 풀었다. 시간 복잡도가 크므로 간단히 참고만 하시길 바랍니다. 0부터 150,000,000까지 모든 경우의 수를 탐색하면서 answer을 최솟값으로 갱신한다. 처음에는 100,000,000으로 두고 했는데, 57595358의 반례가 있어서 넉넉하게 바꿨다. int getSum(int num) { int ret(0); while (num > 0) { ret += num ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 사칙연산 중에서 나눗셈을 제외한 +, -, * 을 가지고 모든 경우의 수를 확인해서 절댓값이 가장 큰 값을 구하는 문제이다. 사칙연산과는 달리 우선순위가 같은 연산자는 없다. next_permutation을 이용하여 모든 경우의 수를 탐색하도록 했다. 벡터를 이용해서 idx의 값과 idx+1의 값을 연산을 하고, 해당 값을 idx에 저장, idx+1는 erase를 하여 숫자를 합하였..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 다른 방법으로 풀어야 하나 했는데 나온 그대로 코드를 작성하면 된다. 문제 잘 이해가 안 돼서 풀이를 참조했다. 입력이 빈 문제일 때까지 계속 재귀를 해야 한다. 코드를 더 세분화할 수 있긴 한데 크게 두 가지로 나누었다. 첫 번째는 isCorrect함수로 해당 문자열이 올바른 문자열인지를 판별하여 bool형을 return 하는 함수이다. bool isCorrect(string s)..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 백준의 회의실 배정, 강의실 배정과 비슷한 문제이다. 정렬 + 우선순위 큐를 이용하여 풀었다. 먼저 문제에서 주어진 시각은 string형 이므로 int형으로 바꿔 시각을 분으로 모두 바꾼다. 퇴실을 하면 해당 방은 10분간 청소 시간이 필요하므로 분으로 바꿀 때 퇴실 시각에만 10분씩 더해준다. 변환이 모두 끝났으면 정렬을 통해 시작 시각을 기준으로 오름차순 정렬을 한다. 그다음 ..