ji_iin
iOSLog
ji_iin
전체 방문자
오늘
어제
  • 분류 전체보기 (56)
    • Swift (8)
    • iOS (6)
    • 알고리즘 (34)
    • CS (3)
    • 회고 (3)
    • 제품리뷰 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발회고
  • swiftUI
  • ios
  • 너비우선탐색
  • 다이나믹 프로그래밍
  • 프로그래머스
  • Python
  • 파이썬
  • django
  • 수학
  • 깊이우선탐색
  • 깊은복사와 얕은복사
  • 구조체와 클래스
  • 백트래킹
  • Bye2023
  • opional
  • 브루트포스 알고리즘
  • 정렬
  • 회고
  • 알고리즘개념
  • 백준
  • 그래프탐색
  • 그래프이론
  • SWiFT
  • 대기업코테
  • 공식문서
  • 재귀
  • 자바
  • 2022년 회고
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ji_iin
알고리즘

[JAVA] 백준 1697번 - 숨바꼭질

알고리즘

[JAVA] 백준 1697번 - 숨바꼭질

2021. 7. 19. 15:59

문제

1697번: 숨바꼭질

[ 해결순서 ]

  1. 문제의 조건을 파악한 후 이동을 할 때 3가지 경우에 따라 조건문을 작성하면 되겠다고 파악했다.
  2. 큐를 이용하여 시작 값을 먼저 큐에 넣고
  3. 큐가 비어있을 때까지 반복해서 큐의 값을 꺼내어 3가지 조건을 너비우선탐색을 이용한다.
  4. 값이 조건에 벗어나지 않고, 방문을 하지 않았으면 그 값을 큐에 넣어 재귀호출을 통해 그 값을 기준으로 또 너비우선탐색을 한다.
  5. 결과의 위치를 찾으면 그 위치가 몇 초후에 찾았는지 visited 배열의 값에 넣어 출력한다.

✏️ 한줄 평

이런 종류의 문제를 너비우선탐색을 이용하여 풀 수 있구나를 제대로 알게 된 문제였다.


코드

package July_3;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main1697 {
static int[] visited = new int[100001]; //몇 초 후에 방문했는지를 위한 배열
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
move(n,k);
}
public static void move(int n, int k) {
Queue<Integer> q = new LinkedList<>();
q.offer(n); //처음 값 n을 넣음 !
while (!q.isEmpty()) {
int value = q.poll();//큐에 있는 제일 첫번째 값을 꺼냄
if(value==k) {
System.out.println(visited[k]);
break;
}
// 꺼낸 값을 기준으로 너비우선탐색
if(value-1>=0 && visited[value-1]==0){ //x-1로 이동
q.offer(value-1);
visited[value-1]=visited[value]+1;
}if(value+1<=100000 && visited[value+1]==0){ //x+1로 이동
q.offer(value+1);
visited[value+1]=visited[value]+1;
}if(value*2<=100000 && visited[value*2]==0){ //x*2로 이동
q.offer(value*2);
visited[value*2]=visited[value]+1;
}
}
}
}
view raw BOJ1697.java hosted with ❤ by GitHub

'알고리즘' 카테고리의 다른 글

[JAVA] 백준 11057 - 오르막 수  (0) 2021.07.25
[JAVA] 백준 7569번 - 토마토  (0) 2021.07.25
[JAVA] 백준 1991번 - 트리순회  (0) 2021.07.19
[JAVA] 백준 2667번 - 단지번호붙이기  (0) 2021.07.19
[JAVA] 백준 1149번 - RGB거리  (0) 2021.07.19
  • [ 해결순서 ]
  • ✏️ 한줄 평
  • 코드
'알고리즘' 카테고리의 다른 글
  • [JAVA] 백준 7569번 - 토마토
  • [JAVA] 백준 1991번 - 트리순회
  • [JAVA] 백준 2667번 - 단지번호붙이기
  • [JAVA] 백준 1149번 - RGB거리
ji_iin
ji_iin
개발성장일지🐥

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.