백준 조교는 새디스트야!!

KIMYEONGJUN·2025년 4월 5일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫 번째 줄에 헌우네 반 학생의 수 N이 주어진다. (1 ≤ N ≤ 20,000)
두 번째 줄에 학생들의 번호가 현재 줄을 서있는 순서대로 주어진다. (1 ≤ 번호 ≤ N) 중복되는 번호는 없다.

몇 명이 맞게 될지 구하여라.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 효율적으로 입력을 받는다.
학생 번호 배열 생성: 두 번째 줄에서 학생 번호를 읽어 배열에 저장한다.
잘못된 순서 계산: 각 학생의 번호가 자신의 인덱스와 일치하지 않는 경우를 세어 잘못된 순서의 학생 수를 카운트한다.
결과 출력: 최종적으로 잘못 서 있는 학생의 수를 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

// 백준 14656번 문제
public class Main982 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 첫 번째 줄에서 학생 수 N을 읽어 정수로 변환
        int N = Integer.parseInt(br.readLine());

        // 두 번째 줄에서 학생 번호를 공백으로 나누어 배열에 저장
        String[] input = br.readLine().split(" ");
        int[] positions = new int[N]; // 학생 번호를 저장할 배열 생성

        // 입력된 학생 번호를 positions 배열에 저장
        for(int i = 0; i < N; i++) {
            positions[i] = Integer.parseInt(input[i]);
        }

        int count = 0; // 잘못된 순서의 학생 수를 세기 위한 변수 초기화

        // 각 학생 번호가 자신의 인덱스 + 1과 일치하는지 확인
        for(int i = 0; i < N; i++) {
            if(positions[i] != i + 1) {
                count++; // 일치하지 않으면 카운트 증가
            }
        }

        // 잘못 서 있는 학생의 수를 출력
        System.out.println(count);
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글