광규니
광규니네
광규니
전체 방문자
오늘
어제
  • 분류 전체보기 (154)
    • 알고리즘 (100)
      • 알고리즘 개념 (2)
      • 문제 풀이 (96)
    • 주절주절 (19)
      • 자격증, 활동 후기 (4)
      • 전시회 후기 (3)
      • 이모저모 (2)
      • 회고 (3)
      • 뜨럼 (7)
    • 운영체제 (9)
    • 개발 지식 (9)
      • Apple Watch (4)
      • MySQL (2)
      • Eclipse (1)
      • XCode (1)
    • 네트워크 공부 (1)
    • 데이터베이스 공부 (5)
    • Java 공부 (7)
    • TMP (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구현
  • 파이썬
  • 백준
  • OS
  • 오블완
  • 자바
  • 애플워치 앱 만들기
  • DP
  • 개념
  • 컴퓨터 사이언스
  • 다이나믹 프로그래밍
  • BFS
  • 합주
  • 프로그래머스
  • 알고리즘
  • 애플워치 앱
  • 운영체제
  • BOJ
  • 드린이
  • 티스토리챌린지

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
광규니

광규니네

알고리즘/문제 풀이

[JAVA SWEA 1210 ] Ladder1

2021. 8. 4. 13:01
반응형

풀이

arr에 값을 모두 넣어주고

find에 도착점인 x,y, arr를 넘겨주었습니다.

 

find내에서 방향 dir을 정해주고,

dir이 좌 방향일때와 우방향일땐 상 방향 먼저 탐색하고 자기 자신 방향을 탐색하게끔,

상 방향일땐 자기 자신 방향 먼저 탐색하게끔 했습니다.

import java.io.FileInputStream;
import java.io.*;
import java.lang.*;
import java.util.StringTokenizer;

public class Solution {
	// 좌 상 우
	static int[] dx ={0,-1,0};
	static int[] dy= {-1,0,1};
	//출발점 찾기!
	static void find(int x, int y, int[][] arr) {
		int dir=1;
		while(x!=0){
			if(dir==1) dir++;
			else if(dir==2) dir+=2;
			for(int i=0 ; i<3 ; i++) {
				int nx=x+dx[(dir+i)%3];
				int ny=y+dy[(dir+i)%3];
				if(0<=nx && nx<100 && 0<=ny && ny<100) {
					if(arr[nx][ny]==1) {
						x=nx;
						y=ny;
						dir=(dir+i)%3;
						break;
					}
				}
			}
		}
		System.out.printf("%d\n",y);
		
	}
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		System.setIn(new FileInputStream("res/input_d4_1210.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb= new StringBuilder();
		int[][] arr= new int[100][100];
		for(int tc=1 ; tc<=10 ; tc++) {
			// 출발
			int x=99;
			int y=0;
			br.readLine();
			for(int i=0 ; i<100 ; i++) {
				StringTokenizer st= new StringTokenizer(br.readLine()," ");
				for(int j=0 ; j<100 ; j++) {
					arr[i][j]=Integer.parseInt(st.nextToken());
					if(arr[i][j]==2) {
						y=j;
					}
				}
			}
			System.out.printf("#%d ",tc);
			// 도착점을 넘긴다.
			find(x,y,arr);
			
		}
	}

}

 

반응형
저작자표시 (새창열림)

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[Java SWEA 1247] 최적 경로  (0) 2021.08.19
[JAVA/자바 1992 백준] 쿼드트리  (0) 2021.08.18
[Python/파이썬 프로그래머스] 다트게임(카카오)  (0) 2021.06.30
[Python/파이썬 프로그래머스] 실패율  (0) 2021.06.29
[파이썬/Python 프로그래머스] 체육복  (0) 2021.06.28
    '알고리즘/문제 풀이' 카테고리의 다른 글
    • [Java SWEA 1247] 최적 경로
    • [JAVA/자바 1992 백준] 쿼드트리
    • [Python/파이썬 프로그래머스] 다트게임(카카오)
    • [Python/파이썬 프로그래머스] 실패율
    광규니
    광규니
    공부 및 일상 올리기~

    티스토리툴바