250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- java
- JavaScript
- html
- 이벤트
- 데이터통신
- scrolly
- 네트워킹
- 연습문제
- 단어장
- 일본어
- 스크롤
- Node.js
- prettier-code formatter
- 한빛아카데미
- 자바
- gsap
- reactjs code snippets
- 알고리즘
- 백준
- quizlet
- Algorithm
- 함수
- ScrollToPlugin
- ArrayList
- React
- 자바스크립트
- 초연결사회의 데이터통신과 네트워킹
- JLPT
- 라이브러리
- 초연결 사회의 데이터통신과 네트워킹
Archives
- Today
- Total
umilove98의 블로그
백준 1331 Java 본문
반응형
36개의 입력을 한 줄 씩 받아가며 다음 요소들을 판별한다
1. 이전 입력과 현재 입력을 비교하여 나이트가 이동할 수 있는 위치인지 확인
2. 현재 입력된 위치가 이전에 방문한 적 없는 위치인지 확인
위 두 가지 중 하나라도 맞지 않다면 Invalid 출력 후 프로그램 종료
모든 입력이 끝난 후 마지막 입력과 첫 번째 입력을 비교하여 마지막 방문지에서 시작점으로 한 번에 이동할 수 있는지 확인
불가능 시 Invalid 출력후 프로그램 종료
위의 모든 과정이 끝나면 Valid 출력
이동 가능한 위치인지 판별하는 방법은 나이트는 x방향으로 2칸 y 방향으로 1칸 or x방향으로 1칸 y방향으로 2칸 이동할 수 있으므로 이전 x좌표와 현재 x좌표, 이전 y좌표와 현재 y 좌표의 차를 절대값으로 구해 1, 2 또는 2, 1이 나온다면 이동할 수 있는 위치로 판별하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Q1331 {
public static int nowx, nowy, prevx, prevy;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> visit = new ArrayList<String>(); // 방문한 좌표를 저장하기 위한 리스트
String st = br.readLine();
int startx = st.charAt(0); // 첫번째 위치를 저장해둠
int starty = st.charAt(1);
prevx = startx;
prevy = starty;
visit.add(st);
for(int i = 0; i < 35; i++) {
String s = br.readLine();
nowx = s.charAt(0);
nowy = s.charAt(1);
if(visit.contains(s)) { // 방문한 적 있는 곳에 또 다시 방문하면 Invalid
System.out.println("Invalid");
return;
}
if(Math.abs(nowx - prevx) == 2 && Math.abs(nowy - prevy) == 1 || Math.abs(nowx - prevx) == 1 && Math.abs(nowy - prevy) == 2) { // 나이트가 이전 위치에서 이동할 수 있는 위치가 아니면 Invalid
}else {
System.out.println("Invalid");
return;
}
visit.add(s);
prevx = nowx;
prevy = nowy;
}
if(Math.abs(nowx - startx) == 2 && Math.abs(nowy - starty) == 1 || Math.abs(nowx - startx) == 1 && Math.abs(nowy - starty) == 2) { // 마지막 도달위치에서 첫 번째 위치로 갈 수 없으면 Invalid
}else {
System.out.println("Invalid");
return;
}
System.out.println("Valid");
}
}
|
cs |
반응형
'algorithm > 백준' 카테고리의 다른 글
백준 1247 Java (0) | 2021.07.30 |
---|---|
백준 1343 Java (0) | 2021.07.29 |
백준 1085 Java (0) | 2021.07.28 |
백준 1316 Java (0) | 2021.07.27 |
백준 1009 Java (0) | 2021.07.27 |