[백준/JAVA]10811번 바구니 뒤집기

2025. 1. 13. 14:50·코딩테스트/백준

문제

https://www.acmicpc.net/problem/10811

배열에서 주어진 구간을 뒤집는(역순으로 바꾸는) 작업을 여러 번 수행하는 문제였다.

문제 풀이 

1. Scanner

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //Scanner 객체를 생성하여 입력을 받기 위한 준비
        Scanner scanner = new Scanner(System.in);	
        
        //배열의 크기 N과 뒤집을 구간의 수 M을 입력받음
        int N = scanner.nextInt(); 
        int M = scanner.nextInt(); 
        
        //크기가 N인 정수형 배열을 생성
        int[] array = new int[N]; 

        //배열에 1부터 N까지의 숫자를 순서대로 저장
        for (int i = 1; i <= N; i++) {
            array[i - 1] = i; 
        }
        
        //M번의 구간 뒤집기 작업을 수행
        for (int k = 0; k < M; k++) {
            // 구간의 시작 인덱스 i와 끝 인덱스 j를 입력받음
            int i = scanner.nextInt();
            int j = scanner.nextInt();
            
            //구간 [i, j]를 뒤집기 위해 중간까지 반복
            for (int p = 0; p < (j - i + 1) / 2; p++) { 
                //현재 위치의 값을 임시 변수에 저장
                int temp = array[i - 1 + p]; 
                
                //대칭 위치의 값을 현재 위치에 저장
                array[i - 1 + p] = array[j - 1 - p]; 
                
                //임시 변수에 저장된 값을 대칭 위치에 저장
                array[j - 1 - p] = temp; 
            }
        }
        
        // 최종 배열의 내용을 출력
        for(int i = 0; i < array.length; i++){
            System.out.print(array[i] + " "); 
        }
        
        //Scanner 객체를 닫아 리소스를 해제
        scanner.close();
    }
}

2. BufferedReader

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

public class Main {
    public static void main(String[] args) throws IOException {
        //BufferedReader를 사용하여 입력을 받기 위한 준비
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        //첫 번째 줄에서 N과 M을 입력받음
        String[] firstLine = reader.readLine().split(" ");
        int N = Integer.parseInt(firstLine[0]); 
        int M = Integer.parseInt(firstLine[1]); 
        
        //1부터 N까지의 숫자를 가진 배열 생성
        int[] array = new int[N];
        for (int i = 1; i <= N; i++) {
            array[i - 1] = i; //배열에 값 할당
        }
        
        //M번의 반전 작업 수행
        for (int k = 0; k < M; k++) {
            //각 반전 작업에 대한 입력을 받음
            String[] line = reader.readLine().split(" ");
            int i = Integer.parseInt(line[0]); //반전 시작 인덱스
            int j = Integer.parseInt(line[1]); //반전 종료 인덱스
            
            //i부터 j까지의 구간을 반전
            for (int p = 0; p < (j - i + 1) / 2; p++) {
                //반전할 두 요소를 교환
                int temp = array[i - 1 + p]; //시작 인덱스의 요소
                array[i - 1 + p] = array[j - 1 - p]; //종료 인덱스의 요소
                array[j - 1 - p] = temp; //교환
            }
        }
        
        //최종 배열 출력
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " "); //배열의 각 요소를 출력
        }
    }
}

'코딩테스트 > 백준' 카테고리의 다른 글

[백준/JAVA]27866번 문자와 문자열  (0) 2025.01.13
[백준/JAVA]1546번 평균  (0) 2025.01.13
[백준/JAVA]3052번 나머지  (0) 2025.01.10
[백준/JAVA]5597번 과제 안 내신 분..?  (0) 2025.01.10
[백준/JAVA]10818번 최소, 최대  (0) 2025.01.09
'코딩테스트/백준' 카테고리의 다른 글
  • [백준/JAVA]27866번 문자와 문자열
  • [백준/JAVA]1546번 평균
  • [백준/JAVA]3052번 나머지
  • [백준/JAVA]5597번 과제 안 내신 분..?
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[백준/JAVA]10811번 바구니 뒤집기
상단으로

티스토리툴바