목록전체 글 (241)
곽로그
문제 www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 풀이 N과 M (4)와 비슷한 문제다. (4)와 (8)의 다른 점은, (4)는 1~N까지의 숫자를 선택하는 것이고 (8)은 수열의 1(0)~N(N-1)까지의 인덱스에 있는 숫자를 선택하는 것이다. 선택할 숫자가 있는 배열을 크키가 N이고, 이름을 candidate로 선언한 후 오름차순 정렬을한다. 선택한 숫자가 있는 배열을 크기가 M이고 이름을 numArray라고 선언한다. numArray의 n번..
문제 www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 풀이 N과 M(3)과 같은 비슷한 문제인데 N과 M(3)과 다른 점은 (3)은 1~N까지의 숫자를 선택하는 문제이고, (7)은 0~ N-1까지의 인덱스에 있는 숫자를 선택하는 문제이다. 출력을 사전순으로 하라고 했으므로, 숫자를 입력받은 후 오름차순으로 정렬한 다음에 인덱스를 차례로 선택하면 된다. numArray의 index에 들어갈 수 있는 숫자는 candidates 배열의 0~ N-1번째 인..
문제 www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 풀이 f(n)을 n개의 카드를 구매할 때의 최대 가격이라고 정의하자. 이 경우 f(n) = MAX( f(n-k) + prices[k] ) ( 1
문제 www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 브루트포스로 푼다면, 주어진 수열을 순회하면서 해당 인덱스의 숫자를 선택한다, 선택하지 않는다로 풀 수 있다. 각 인덱스의 숫자를 선택하고서 선택된 숫자의 합을 ArrayList에 add한다. 문제에서 수는 한개 이상 선택해야한다고 했으므로 ArrayList에 맨 마지막에 add되는 숫자는 remove한다. 그런데 이렇게 풀게 될 경우 시간복잡도는 2의 N(수열 원소의 갯수) 인데, N의 최댓값은 100,000..
문제 programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 풀이1 방법 1) 변수 - skillDeploy : 배포할지 말지 검사하는 큐 - skillDevelop :스피드 만큼 진행하는 큐 2) 초기화 - skillDeploy에 progresses순서대로 add 한다 3) 반복 - skillDeploy의 맨 위의 스킬의 진행도를 확인한다 - 100 미만이면 skillDeploy에서 하나씩 꺼내서 스피드만큼 진행시킨다음 ..
문제 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 이동방향은 → ↓ ← ↑ 순서로 바뀐다. 방향이 바뀔 때는 map 밖을 벗어났거나, 이미 숫자가 적힌 map을 만났을 때이다. 이를 map의 각 칸에 적히는 숫자 num이 N*N 이하인 경우 반복한다. 1. 현재칸에 num을 적는다 2. num을 1증가시킨다 3. 다음 칸을 구한다 4. 다음 칸에 이미 숫자가 적혀있거나,..
문제 www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1≤N≤100,000,000)이 주어진다. www.acmicpc.net 틀린풀이1: 수를 나열 한다음 자리 수 구하기 - 반례 : 120 - 1부터 120까지 나열한 수가 long, int의 범위를 벗어난다 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br..
문제 www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 첫번째 풀이(시간초과) 가장 간단한 풀이다. year, yearX, yearY를 하나씩 증가시키면서 yearX, yearY가 각각 x 와 y랑 같은지 체크해준다. 이때 yearX, yearY를 증가시킬 때 M, N을 넘으면 1로 초기화 시켜준다. (근데 다시 풀이를 보니까 종료조건도 틀려있다) 그런데 이 풀이의 시간복잡도는 O(MN)이다. 카잉달력의 마지막 날은 인데 이를 1씩 카운트 하면 MN의 최소 공배수..