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

KIMYEONGJUN·4일 전
0
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개의 댓글

관련 채용 정보