백준/Java

[백준 자바] 15814번(야바위 대장) - StringBuilder.setCharAt()

gamzaggang7 2024. 6. 25. 13:01
728x90

브론즈 2

문제

10년 동안 도박판에서 야바위를 한 영훈은 이제 보지 않고도 구슬이 있는 컵을 맞추는 지경에 이르렀다.

이런 영훈을 골탕 먹이기 위해 문자열로 야바위를 하려고 한다.

T번 동안 문자열 S의 A번째 위치에 있는 문자와 B번째 위치에 있는 문자를 바꾼 결과를 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 문자열 S가 주어지고 두 번째 줄에 T가 주어진다. 문자열 S의 길이는 100보다 작거나 같은 자연수이며, 알파벳 대소문자와 하이픈(-)으로만 이루어져 있다. T는 50보다 작거나 같은 자연수이다.

그 다음 T개의 줄에 걸쳐 A와 B가 주어진다.

A와 B는 문자열의 길이보다 작은 음이 아닌 정수이며, 문자열의 맨 처음 글자는 0번째 글자이다.

출력

바뀐 문자열의 결과를 출력한다.

 


 

728x90

StringBuilder의 setCharAt 메서드를 사용하여 간단하게 인덱스의 문자를 바꿀 수 있다.

import java.io.*;
import java.util.StringTokenizer;

public class Main15814 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    StringBuilder str = new StringBuilder(br.readLine());
    int T = Integer.parseInt(br.readLine());

    while (T-- > 0) {
      StringTokenizer st = new StringTokenizer(br.readLine(), " ");
      int A = Integer.parseInt(st.nextToken());
      int B = Integer.parseInt(st.nextToken());

      char copyA = str.charAt(A);
      str.setCharAt(A, str.charAt(B));
      str.setCharAt(B, copyA);
    }

    bw.write(str.toString());

    bw.flush();
    br.close();
    bw.close();
  }
}

728x90