https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
이동하는 방향이 주어질 때, 원하는 만큼 방향대로 이동하여 원점으로 돌아올 수 있는지 확인하여 갈 수 있다면 Yes, 불가능하면 No를 출력하는 문제이다. 방향만 주어지고 원하는 만큼만 이동하므로 한 쪽 방향 이동이 있으면 반대 방향 이동이 있기만 한다면 무조건 돌아올 수 있다. 즉, 양쪽 다 안 가거나 양쪽 다 한 번 이상 가는 경우를 제외하고는 원점으로 돌아올 수 없다.
이를 확인하기 위해 boolean으로 각 방향이 한 번이라도 가는지 확인하였다.
boolean e = false, w = false, s = false, n = false;
for(int i=0; i<line.length(); i++) {
if(line.charAt(i) == 'E') e = true;
else if(line.charAt(i) == 'W') w = true;
else if(line.charAt(i) == 'S') s = true;
else n = true;
}
if((e && !w) || (w && !e) || (s && !n ) || (n && !s)) {
sb.append("No");
} else sb.append("Yes");
sb.append("\n");
결과 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int tc = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int test_case=0; test_case<tc; test_case++) {
String line = br.readLine();
boolean e = false, w = false, s = false, n = false;
for(int i=0; i<line.length(); i++) {
if(line.charAt(i) == 'E') e = true;
else if(line.charAt(i) == 'W') w = true;
else if(line.charAt(i) == 'S') s = true;
else n = true;
}
if((e && !w) || (w && !e) || (s && !n ) || (n && !s)) {
sb.append("No");
} else sb.append("Yes");
sb.append("\n");
}
br.close();
System.out.print(sb);
}
}'알고리즘(백준 등) 공부' 카테고리의 다른 글
| SWEA 25695. 세 정수 (0) | 2026.04.09 |
|---|---|
| SWEA 25837. 합과 곱 (0) | 2026.04.08 |
| SWEA 25838. 여우 줄이기 (0) | 2026.04.07 |
| SWEA 26011. 정수들의 합 (0) | 2026.04.05 |
| SWEA 26390. 트리 바꾸기 (0) | 2026.04.03 |