반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 5431번 민석이의 과제 체크하기 자바(Java)

1) 난이도 : D3

 

2) 문제번호 : 5431번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl3rWKDBYDFAXm

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

2. 문제

민석이는 교수가 되었고, 이번에 처음으로 맡은 과목에 수강생이 N명이다.

민석이는 처음으로 과제를 내었다.

그리고 제출한 사람의 목록을 받았다.

수강생들은 1번에서 N번까지 번호가 매겨져 있고, 어떤 번호의 사람이 제출했는지에 대한 목록을 받은 것이다.

과제를 제출하지 않은 사람의 번호를 오름차순으로 출력하는 프로그램을 작성하라.

3. 제약사항

 

4. 입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 수강생의 수를 나타내는 정수 N(2≤N≤100)과 과제를 제출한 사람의 수를 나타내는 정수 K(1≤K≤N)가 공백으로 구분되어 주어진다.

두 번째 줄에는 과제를 제출한 사람의 번호 K개가 공백으로 구분되어 주어진다. 번호는 1이상 N이하의 정수이며 같은 번호가 두 번 이상 주어지는 경우는 없다.

 

5. 출력

각 테스트 케이스마다 과제를 제출하지 않은 사람의 번호를 오름차순으로 출력한다.

6. 풀이

- 이 문제가 왜 D3인지 모르겠다.

- D2 정도 문제가 맞을거 같긴 한데..

- N크기만큼 배열을 만들어서 K-1 값을 배열에 넣어 ++해주고, 0인 것들 출력

7. 소스 코드

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// 테스트케이스 입력
		int T = sc.nextInt();
		
		for(int tc=1; tc<=T; tc++) {
			int N = sc.nextInt(); // 수강생의 수
			int K = sc.nextInt(); // 과제를 제출한 수
			
			int[] arr = new int[N];
			for(int i=0;i<K;i++) {
				arr[sc.nextInt()-1]++;
			}
			
			System.out.printf("#%d ",tc);
			for(int i=0;i<N;i++) {
				if(arr[i]==0) {
					System.out.printf("%d ",i+1);
				}
			}
			System.out.println();
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기