목록코딩테스트 (13)
안드로이드 개발자의 창고
10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net ❓ 문제 풀이 누적 합을 이용한 문제이다. 처음에 생각했던 건 구간 합을 이용하는 것이었다. 실제로 문제에도 구간의 합이라 써있어서... 구간 합을 구하여 M으로 나눈 나머지가 0이면 되는 것이다. sum이라는 Array에 N개의 수 구간 합을 만들면 i ~ j 까지의 구간 합은 sum[j] - sum[i-1]이다. 따라서 (sum[j] - sum[i-1]) % M이 0인 경우를 찾으면 된다. 위의 식은 sum[j]..
11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net ❓ 문제 풀이 처음 for문을 이용해서 계산했을 때는 시간 초과가 발생했다. 매번 구간 합을 구하는 것 보다 구간 합을 구해놓고 출력하는 방법이 더 빠르다. i부터 j까지의 구간 합 = j번째 숫자까지의 구간 합 - (i - 1)번째 숫자까지의 구간 합 예 ) 5, 4, 3, 2, 1 1 ~ 3까지의 구간 합은 3번째 숫자까지의 구간 합 = 5 + 4 + 3 = 12 0번째(1 - 1) 숫자까지의 구간 합 = 0 12 - 0 = 12 2 ~..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 풀이 고득점 kit 스택/큐에 포함되어있는 문제로 Queue를 사용하여 풀었다. progress와 speeds 배열을 Queue로 변환한다. 작업을 하나씩 제거하며 배포되는 작업 수를 카운트할 변수(cnt)를 선언한다. 작업이 완료되는 날짜를 카운트할 변수(time)를 선언한다. 작업 진도 + (작업 속도 * 날짜)를 계산한다. 계산한 결과가 100이 넘으면 Queue에 저장되어있는 작업과 속도를 제거한다. 한 번에 배포되는 작업을 카운트한다. 100이 넘지 않으면 answer에 cnt를 담는다. c..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 풀이 해시를 연습하는 고득점 kit 문제로 해시를 사용하여 풀 방법을 생각했다. 해시 맵을 사용하여 의상의 종류 갯수를 구한다. 해시 맵의 key는 의상의 종류 이름(String)으로 하고, value를 1(Int)로 한다. 같은 의상 종류가 있다면 value를 증가(++) 시킨다. 서로 다른 옷의 조합 수를 구한다. 입출력 예시를 보면 (의상의 종류 + 1) 한 값에서 1을 빼준 값이 정답이 된다. 의상의 종류에 +1을 하는 이유는 해당 의상을 안입었을 경우도 포함시키기 위해서이다. 최종 값에서 -..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓문제 설명 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요. ❓ 제한 사항 1 ≤ i
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 설명 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. ❓ 제한 사항 chicken은 정수입니다. 0 ≤ chicken ≤ 1,000,000 ✔️ 정답 코드 class Solution { fun solution(chicken: I..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. ❓ 제한사항 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. ✔️ 정답 코드 class Solution { fun solution(s: String): String { va..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. ❓ 제한사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. ❓ 입출력 예 n return 121 144 3 -1 ✔️ 정답 코드 import kotlin.math.* class Solution { fun solution(n: Long): Long { val sqr..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요. ❓ 제한사항 1 ≤ n ≤ 10,000 1 ≤ numlist의 원소 ≤ 10,000 1 ≤ numlist의 길이 ≤ 100 numlist는 중복된 원소를 갖지 않습니다. ❓ 입출력 예 numlist n..

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. ❓ ..