Skip to content

Commit a22bbc8

Browse files
committed
[Silver III] Title: 내 선물을 받아줘 2, Time: 124 ms, Memory: 14788 KB -BaekjoonHub
1 parent 8047bd2 commit a22bbc8

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# [Silver III] 내 선물을 받아줘 2 - 15886
2+
3+
[문제 링크](https://www.acmicpc.net/problem/15886)
4+
5+
### 성능 요약
6+
7+
메모리: 14788 KB, 시간: 124 ms
8+
9+
### 분류
10+
11+
그래프 이론, 문자열
12+
13+
### 제출 일자
14+
15+
2025년 1월 30일 14:35:32
16+
17+
### 문제 설명
18+
19+
<p>욱제는 구사과의 열렬한 팬이다. 오늘 욱제는 구사과에게 선물(<img alt="" src="https://upload.acmicpc.net/c725ab53-dfed-4cdd-a508-aaa6e917a04d/-/preview/" style="width: 16px; height: 16px;">)을 전달해주려고 한다. 지난 며칠간의 관찰 끝에 욱제는 구사과의 이동 패턴을 모두 파악했다.</p>
20+
21+
<p>구사과가 있는 곳은 1×N 크기의 직사각형 지도로 나타낼 수 있으며, 1×1크기의 정사각형으로 나누어져 있다. 구사과의 위치는 (1, x)로 나타낼 수 있으며, (1, x)는 왼쪽에서부터 x번째 칸을 의미한다.</p>
22+
23+
<p>지도의 각 칸에는 E, W중의 한 문자가 쓰여져 있는데, 구사과는 이 문자를 이용해서 이동한다. 구사과의 위치가 (1, x)인 경우에 E가 쓰여져 있는 칸에 서 있었다면, (1, x+1)로, W의 경우에는 (1, x-1)로 순간이동한다. 구사과는 지치지 않기 때문에, 계속해서 이동한다.</p>
24+
25+
<p>욱제는 구사과의 위치를 모르기 때문에, 구사과가 이동을 시작하는 위치와 관계없이 선물을 주는 방법을 알아내려고 한다. 최소 몇 개의 칸 위에 선물을 놓으면, 구사과가 항상 선물을 가져가는지 구하는 프로그램을 작성하시오. 선물이 놓여진 칸에 구사과가 이동하면, 구사과는 항상 선물을 가져간다.</p>
26+
27+
### 입력
28+
29+
<p>첫째 줄에 골목길의 길이 N이 주어진다. (2 ≤ N ≤ 1,000)</p>
30+
31+
<p>둘째 줄에 길이 N짜리 구사과가 있는 곳의 지도가 주어진다.</p>
32+
33+
<p>지도에 쓰여 있는대로 이동했을 때, 지도를 벗어나는 경우는 없다.</p>
34+
35+
### 출력
36+
37+
<p>첫째 줄에 최소 몇 개의 칸에 선물을 놓아야 하는지 출력한다.</p>
38+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import java.io.*;
2+
import java.util.Stack;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
9+
int N = Integer.parseInt(br.readLine());
10+
Stack<String> stack = new Stack<>();
11+
int result = 0;
12+
13+
String[] split = br.readLine().split("");
14+
for(int i=0;i<N;i++){
15+
if(!stack.isEmpty()){
16+
// System.out.println(stack.peek() + " " + split[i]);
17+
18+
if(stack.peek().equals("E") && split[i].equals("W")){
19+
// System.out.println("test");
20+
result++;
21+
}
22+
}
23+
stack.push(split[i]);
24+
}
25+
26+
bw.write(result + "\n");
27+
bw.flush();
28+
bw.close();
29+
}
30+
}

0 commit comments

Comments
 (0)