본문 바로가기

Coding Test

(134)
[Java] 수들의 합5 [2018번] https://www.acmicpc.net/problem/2018예제 입력115예제 출력14문제 접근1부터 N까지의 배열을 생성더하는 수의 개수는 고정이 아님문제 해결1 ~ N까지 배열 생성시작 ~ 마지막의 합이 N을 넘을 경우 종료Ex) N = 30start = 14, end = 15 ⇒ 14 + 15 ⇒ 2915(start) + 16(end) ⇒ 31 > 30즉, 15이후 부터는 30이 만들어지는 경우가 없음투 포인터로 아래의 규칙 생성조건 : end가 배열 길이보다 작을 때까지 반복start ~ end의 합이 N보다 작다면 ⇒ end 1증가start ~ end의 합이 N보다 크다면 ⇒ start 1증가start ~ end의 합이 N과 같다면 ⇒ start, end, count 1증가end가 배열 길..
[Java] 수들의 합2 [2003번] https://www.acmicpc.net/problem/2003예제 입력14 21 1 1 1예제 출력13예제 입력210 51 2 3 4 2 5 3 1 1 2예제 출력23문제 접근시간 제한 0.5초 ⇒ 5,000만번의 연산 이내로 해결첫째줄에 숫자의 개수 N과 i~j까지의 합이 M이 되어야하는 수가 주어짐i ~ j까지 더하는데, i~j의 범위가 고정되어 있지 않음입력 예제 2의 예시1번째 경우의 수 ⇒ 2 32번째 경우의 수 ⇒ 53번째 경우의 수 ⇒ 3 1 1문제 해결투 포인터 방식으로 문제 해결최초 start와 end를 같게 시작하여 다음의 규칙 만족목표값(M)보다 start~end의 합이 작을 경우 end 1증가목표값(M)보다 start~end의 합이 클 경우 start 1 증가목표값(M)과 sta..
[Java] 참외밭 [2477번] https://www.acmicpc.net/problem/2477예제 입력174 502 1603 301 603 201 100예제 출력147600문제 접근직사각형의 넓이(6050=8000)에서 제외할 직사각형의 넓이(6020)를 빼야 함임의의 꼭지점에서 역시계 방향으로 진행이 되기 때문에 아래의 규칙을 항상 만족문제 해결방향과 길이를 저장한 배열을 각각 생성길이가 가장 긴 가로 길이, 인덱스 / 길이가 가장 긴 세로 길이, 인덱스 저장꼭지점을 기준으로 항상 역방향이기 때문에 다음과 같은 규칙 생성제외할 사각형의 가로 길이 ⇒ 가장 길이가 긴 가로에서 4번 뒤에 등장제외할 사각형의 세로 길이 ⇒ 가장 길이가 긴 세로에서 2번 뒤에 등장슈도 코드K (참외 개수 저장)direction[] (방향 배열 선언)le..
[Java] 평균은 넘겠지 [4344번] https://www.acmicpc.net/problem/4344예제 입력155 50 50 70 80 1007 100 95 90 80 70 60 503 70 90 803 70 90 819 100 99 98 97 96 95 94 93 91 예제 출력140.000%57.143%33.333%66.667%55.556%문제 접근각 케이스마다의 평균을 구해야 함학생들의 각 점수가 평균을 초과하는 학생만 카운트평균을 초과한 학생 / 총 학생 수 ⇒ 소수점 셋째자리 표현문제 해결각 케이스마다 배열을 생성하여 ArrayList에 저장각 케이스의 평균을 배열로 저장평균과 각 점수를 비교하여 초과하는 학생 수만 카운트평균 초과 학생 / 배열 길이 * 100 ⇒ 소수점 셋째자리 표현슈도 코드T (테스트 케이스 개수 저장)av..
[Java] 2007년 [1924번] https://www.acmicpc.net/problem/1924예제 입력11 1예제 출력1MON예제 입력23 14예제 출력2WED예제 입력39 2예제 출력3SUN예제 입력412 25예제 출력4TUE 문제 접근금일의 다음 주 같은 요일은 +7일월요일 ⇒ 1/1, 1/8, 1/15, 1/22, 1/29, 2/5화요일 ⇒ 1/2, 1/9, 1/16, 1/23, 1/30, 2/6수요일 ⇒ 1/3, 1/10, 1/17, 1/24, 1/31, 2/7목요일 ⇒ 1/4, 1/11, 1/18, 1/25, 2/1금요일 ⇒ 1/5, 1/12, 1/19, 1/26, 2/2토요일 ⇒ 1/6, 1/13, 1/20, 1/27, 2/3일요일 ⇒ 1/7, 1/14, 1/21, 1/28, 2/4문제 해결배열 week = [일,월,화,..
[Java] 7단계. 주사위 세개 [2480번] https://www.acmicpc.net/problem/2480 예제 입력13 3 6예제 출력11300예제 입력22 2 2 예제 출력212000예제 입력36 2 5예제 출력3600 문제 접근주사위의 눈 (1~6)으로 푸는 문제같은 눈이 2개일 경우 같은 눈의 값이 몇 인지 알아야 함모두 다른 눈일 경우 가장 큰 값을 구해야 함 문제 해결Counting sort를 이용하여 문제를 풀 수 있을 것 같음 각 나온 수의 인덱스를 1씩 증가 시킴특정 인덱스의 값이 3일 경우 같은 눈 3특정 인덱스의 값이 2일 경우 같은 눈 2인덱스의 Max 값이 1일 경우 가장 높은 인덱스 출력슈도 코드A[7] 배열 생성for(i = 0 ~ 2까지 반복){ A 배열에 주사위 눈 인덱스 1증가}max(A배열의 최대값 저장)dic..
[Java] 2단계. 대표값2 [2587번] https://www.acmicpc.net/problem/2587 예제 입력11040306030예제 출력13430문제 접근수의 개수는 5개로 고정시작 복잡도가 무엇이든 크게 상관 없음문제 해결입력 받은 값을 Arrays.sort() 함수를 이용하여 정렬stream을 이용하여 합계 계산 후 평균 계산5개 중 중앙값이므로 index = 2번의 값 출력 슈도 코드A[5]배열 선언for(i = 0 ~ 4){ A 배열에 값 저장}A배열 정렬avg = A배열 Stream으로 sum 계산 / 5avg 출력A[2] 출력코딩하기public static void main(String[] args) { Scanner scan = new Scanner(System.in); int[] A = new int[5]; ..
[Java] 1단계. 수 정렬하기 [2750번] https://www.acmicpc.net/problem/2750 예제 입력1552341예제 출력112345문제 접근데이터의 수는 최대 1,000개로 시간 복잡도가 O(N^2)여도 문제가 되지 않음 시간 복잡도 O(N^2) ⇒ 선택 정렬, 삽입 정렬, 버블 정렬문제 해결O(N^2) 중에서도 그나마 빠른 삽입 정렬로 구현0번방은 비교할 것이 없으므로 1번 index부터 시작target 이전의 인덱스가 target보다 값이 크다면, target 위치에 이전 인덱스의 값과 스왑target 이전의 익덱스가 target보다 값이 작다면 그 자리 그대로슈도 코드N (숫자 개수 저장)A[] (배열 선언 및 초기화)for(i = 0 ~ N까지 반복){ A 배열에 데이터 저장}insertion_sort 함수 호출A배열 ..