Code.Dev_MH
DevMHK
Code.Dev_MH
전체 방문자
오늘
어제
  • 개발자의 일상 (40)
    • Language (5)
      • Java (4)
      • Kotlin (1)
      • Python (0)
    • Back-End (1)
      • Spring (1)
      • Django (0)
      • Error (0)
    • Infra (0)
      • Docker (0)
      • CI, CD (0)
      • AWS (0)
    • CS (12)
      • 컴퓨터 구조(Computer Architectur.. (12)
      • 운영 체제(OS) (0)
      • 시스템소프트웨어(SystemSoftware) (0)
      • 네트워크(Network) (0)
      • 소프트웨어공학(Software Engineerin.. (0)
      • 데이터베이스(DataBase) (0)
      • 자료구조(Data Structure) (0)
      • 알고리즘(Algorithm) (0)
    • Git (0)
    • Algorithm (21)
      • 프로그래머스 (5)
      • 백준 (16)
      • 코딩테스트 후기 (0)
    • 회고 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 제로베이스백엔드스쿨
  • 우선순위 큐
  • 컴퓨터구조
  • computer architecture
  • 그리디
  • 프로그래머스
  • 다이나믹프로그래밍
  • INT
  • Priority Queue
  • BFS
  • dp
  • java
  • Greedy
  • 브루트포스
  • 자바와비교
  • 너비우선탐색
  • 코틀린사용이유
  • 코틀린장점
  • cs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Code.Dev_MH

DevMHK

[백준_12605] 단어순서 뒤집기
Algorithm/백준

[백준_12605] 단어순서 뒤집기

2023. 2. 3. 20:00

문제

백준 12605번
https://www.acmicpc.net/problem/12605

스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.

첫 행은 N이며, 전체 케이스의 개수이다.
N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.

  • N = 5
  • 1 ≤ L ≤ 25

각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.

  • 생각해보기

Code

  • 전체 케이스 갯수를 N에 담아준다.
  • for문을 통해 N만큼 반복한다.
  • 반복하면서 Stack을 만들어 입력받은 문자열에 대해 " "구분하여 넣어준다.
  • 결과물을 담아줄 StringBuilder를 생성한다.
  • 기본적으로 "Case # 번호: "구조를 StringBuilder에 추가한다.
  • stack이 빌 때까지 while문을 돌면서 stack에서 꺼내어 StringBuilder에 넣어준다.
  • 꺼낸 후 stack이 비어있지 않다면 " "(띄어쓰기)도 넣어준다.
  • stack이 빌 경우 break로 while문을 탈출한다.
  • for문 한 바퀴 돌 때마다 sb.toString()으로 결과를 반환한다.

Java

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken()); // 전체 케이스 개수

        for (int i = 0; i < N; i++) {
            Stack<String> stack = new Stack<>();
            // 띄어쓰기 구분으로 문자열을 stack에 넣기
            stack.addAll(Arrays.asList(br.readLine().split(" ")));

            // 결과를 담을 StringBuilder
            StringBuilder sb = new StringBuilder(); 

            // case 번호에 맞는 기본 구조
            sb.append("Case #").append(i + 1).append(": ");
            while (!stack.isEmpty()) {
                sb.append(stack.pop());

                // stack이 비었을 경우
                if (stack.isEmpty()) {
                    break;
                }
                // 띄어쓰기로 구분하여 없앴던 부분을 다시 넣어주기
                sb.append(" ");
            }
            //결과 출력
            System.out.println(sb.toString());
        }
    }
}
반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준_1927] 최소 힙  (0) 2023.02.08
[백준_9461] 파도반 수열  (0) 2023.02.06
[백준_1303] 전투  (0) 2023.02.01
[백준_12865] 평범한 배낭  (0) 2023.01.30
[백준_14725] 개미굴  (0) 2023.01.19
    'Algorithm/백준' 카테고리의 다른 글
    • [백준_1927] 최소 힙
    • [백준_9461] 파도반 수열
    • [백준_1303] 전투
    • [백준_12865] 평범한 배낭
    Code.Dev_MH
    Code.Dev_MH
    Back-End 개발자가 되기 위한 개발 노트(Java)

    티스토리툴바