ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구름LEVEL : 근묵자흑 - JAVA
    Dev/코딩테스트 2021. 3. 18. 23:31

    문제 링크 : level.goorm.io/exam/47881/%EA%B7%BC%EB%AC%B5%EC%9E%90%ED%9D%91/quiz/1


    Startup Coding Festival 2021이 3월 20일 진행된다. 그전에 미리 모의테스트 링크가 오늘 메일로 도착하여 모의테스트를 진행해 보았다. 전체적인 느낌은 프로그래머스의 코딩 테스트 페이지와 비슷한 느낌이었다.

     

    이번 문제는 어렵지 않은 문제였다.

    메모장에 문제 2개 정도를 직접 입력해보고 패턴을 파악해보았다.

    문제를 보면 가장 작은 수는 무조건 1이고 입력받은 N개의 숫자를 모두 1로 바꾸는 방법으로 풀이해보았다.

    만약 N = 14, K = 4 라면

    1부터 14까지 무작위의 숫자가 입력된다. 무작위의 숫자를 오름차순으로 정렬해주면

    1 2 3 4 5 6 7 8 9 10  11 12 13 14의 배열이 생긴다고 생각해보자 이때 만약 N의 숫자보다 K의 숫자가 크다면

    출력은 무조건 1이 될 것이다.

    무조건 1번은 실행되고 4개의 숫자를 삭제해주면 10개의 숫자가 남게 된다.

    10개의 숫자는 4-1을 하여 한번 반복될 때마다 3개씩 1로 바꿔준다고 생각해보자.

    3번을 실행하게 되면 마지막 1개의 숫자가 남게 되고 1개의 숫자가 남았다면 한 번 더 반복해보자.

    무조건 1번을 실행하고 그 후에 4번 더 반복되었으니 답은 5일 것이다.

     

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int N = sc.nextInt(); // 14
    		int K = sc.nextInt(); // 4
    		int[] R = new int[N]; // 입력된 N은 14이니 14개의 정수형 배열이 만들어진다.
    		
    		for(int i=0; i<N; i++) {
    			R[i] = sc.nextInt(); // 1에서 14까지 무작위로 입력해준다.
    		}
            
    		Arrays.sort(R); //없어도 되는 코드지만 이해를 위해
    		
    		int temp = N-K; 14개에서 4개를 빼준다. temp = 10이 된다.
    		
    		if(N <= K) {  // K가 N보다 크거나 같으면 1을 출력해준다.
    			System.out.println(1);	
    		}		
    		else if(temp%(K-1) != 0 ) { 
            // 10에서 3을 나누어주었을때 나머지가 있다면 2를 더해준다.
            //여기서 2라는 숫자는 기본 1번 반복과 나머지가 있으니 1번 더 반복해야됨을 의미한다.							
    			System.out.println(temp/(K-1) + 2 );
    		}
    		else {
            // temp 값이 정확히 나누어진다면 기본적으로 1번 반복을 더해준다.
    			System.out.println(temp/(K-1) +1);
    		}
    	}
    }

    사실 코딩 테스트 모의고사는 2문제였다.

    오늘은 이력서 정리를 해야 하니 내일 모의고사 한 문제를 더 풀어볼 예정이다.

    solved 문제보다 난이도가 어렵지 않았다. bronze3 정도 될 것으로 예상해본다.

    댓글

Designed by Tistory.