UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 영속성
  • JPA
  • IDENTITY 전략
  • argumentresolver
  • @GetMapping
  • 영속성컨텍스트
  • EntityManagerFactory
  • HandlerMethodArgumentResolver
  • ReturnValueHandler
  • 백준
  • HttpMessageConverter
  • 엔티티 매핑
  • 동일성보장
  • 요청헤더
  • ViewName반환
  • SEQUENCE 전략
  • @Id
  • @RequestParam
  • @Column
  • @JoinColumn
  • @Table
  • consumes
  • 1차 캐시
  • produces
  • BOJ
  • 정렬
  • @ManyToOne
  • TABLE 전략
  • @PostMapping
  • ORM

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

[PS] 인프런 강의 - Array 11. 임시반장 정하기
PS(Java)/인프런 강의 문제

[PS] 인프런 강의 - Array 11. 임시반장 정하기

2022. 10. 20. 15:56

 

문제

김갑동 선생님은 올해 6학년 1반 담임을 맡게 되었다. 김갑동 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기 반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다.
그래서 김갑동 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자.


위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며, 2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생과 한번이라도 같은 반이었던 사람은 2번 학생, 3번 학생과 5번 학생으로 모두 3명이다. 이 예에서 4번 학생이 전체 학생 중에서 같은 반이었던 학생 수가 제일 많으므로 임시 반장이 된다.
각 학생들이 1학년부터 5학년까지 속했던 반이 주어질 때, 임시 반장을 정하는 프로그램을 작성하시오.

 

▣ 입력설명
첫째 줄에는 반의 학생 수를 나타내는 정수가 주어진다. 학생 수는 3 이상 1000 이하이다. 둘째 줄부터는 1번 학생부터 차례대로 각 줄마다 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 5개의 정수가 빈칸 하나를 사이에 두고 주어진다. 주어지는 정수는 모두 1 이상 9 이하의 정수이다.

 

▣ 출력설명
첫 줄에 임시 반장으로 정해진 학생의 번호를 출력한다. 단, 임시 반장이 될 수 있는 학생이 여러 명인 경우에는 그 중 가장 작은 번호만 출력한다.

 

▣ 입력예제 1
5
2 3 1 7 3
4 1 9 6 8
5 5 2 4 4
6 5 2 6 7
8 4 2 2 2

 

▣ 출력예제 1
4

 

풀이

 

 

그림처럼 삼중 for문으로 풀면되는 문제다.

 

이렇게 풀면 자기 자신도 카운트되지만 문제의 답은 몇번 학생인지 구하는 것이니까 상관없다.

 

같은 반인 학생을 카운트할 때 중복되면 안되므로 꼭 break해서 탈출해야 한다는 점을 주의!

 

코드

import java.util.Scanner;

public class Main {
	
	static int[] dx = {-1, 0, 1, 0};
	static int[] dy= {0, 1, 0, -1};
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int n = in.nextInt();
		int[][] student = new int[n+1][n+1];
		
		for(int i=1; i<=n; i++) {
			for(int j=1; j<=n; j++) {
				student[i][j] = in.nextInt();
			}
		}
		
		int max = Integer.MIN_VALUE;
		int answer = 0;
		for(int i=1; i<=n; i++) { //i번학생 순회
			int cnt = 0;
			for(int j=1; j<=n; j++) { //j번학생 순회
				
				for(int k=1; k<=n; k++) { //학년 순회
					if(student[i][k] == student[j][k]) {
						cnt++;
						break; //주의!!! 중복X
					}
				}
			}
			if(cnt > max) {
				max = cnt;
				answer = i;
			}
		}
		
		
		System.out.print(answer);
		
	}
}
저작자표시 비영리 변경금지 (새창열림)

'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글

[PS] 인프런 강의 - Two Pointers, Sliding window, Math 1. 두 배열 합치기  (0) 2022.10.21
[PS] 인프런 강의 - Arrays 12. 멘토링  (0) 2022.10.21
[PS] 인프런 강의 - Array 10. 봉우리  (0) 2022.10.20
[PS] 인프런 강의 - Array 9. 격자판 최대합  (0) 2022.10.18
[PS] 인프런 강의 - Array 8. 등수구하기  (0) 2022.10.18
    'PS(Java)/인프런 강의 문제' 카테고리의 다른 글
    • [PS] 인프런 강의 - Two Pointers, Sliding window, Math 1. 두 배열 합치기
    • [PS] 인프런 강의 - Arrays 12. 멘토링
    • [PS] 인프런 강의 - Array 10. 봉우리
    • [PS] 인프런 강의 - Array 9. 격자판 최대합
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바