목록전체 글 (370)
GitHubSeob

문제 https://www.acmicpc.net/problem/2428 2428번: 표절 첫째 줄에 제출한 솔루션의 개수 N이 주어진다. 둘째 줄에는 각 솔루션 파일의 크기 size(F1), size(F2), ..., size(FN)이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ size(Fi) ≤ 100,000,000) 솔루션 파일의 크기는 정수이 www.acmicpc.net 문제풀이 두 파일이 있을 때 두 조건을 만족해야 한다. 1. 작은 파일 = 큰 파일 * 0.9 따라서 이분 탐색인 lower_bound를 이용하여 문제를 푼다. 모든 입력을 받았으면 sort를 통해 오름차순으로 정렬한다. 0번째 파일부터 N-1번째 파일까지 탐색을 한다. 탐색하는 idx번째 파일을 큰 파일로 둔다. 그렇다면 ..

문제 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제풀이 연속된 K개만큼의 누적합 중 가장 큰 값을 구하는 문제이다. 먼저 온도를 입력받는다. 0번 온도부터 K개만큼 온도의 합을 sum에 누적 합한다. 그다음 현재 누적합에서 가장 처음에 더한 값을 뺀다. (idx - K 번째 온도) idx - K번째 온도값을 뺐으니 idx번째 온도를 더해 더한 온도의 개수를 K로 맞춘다. max 함수를 이용해 answer의 최댓값을 갱신한다...

문제 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를 하여 숫자를 합하였..