광규니
광규니네
광규니
전체 방문자
오늘
어제
  • 분류 전체보기 (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)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

광규니네

알고리즘/문제 풀이

[Java/자바 백준 1347] 미로 만들기

2022. 2. 15. 00:20
반응형

풀이

실버 4 문제지만, 그것보다는 조금 더 어려운 문제인거 같다.

 

처음 문제를 봤을 때 맵의 크기를 어떻게 정해주지 10분 정도 고민하다가

최대 맵 크기를 한정해주고,

 

명령에 따라서 도달한 전진한 위치는

1로 바꿔주었다.

 

x,y값들의 최대 최소 값을 구해서

범위 안에 1인 값은 "." , 0인 값은 "#"으로 StringBuilder에 넣어주었다.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	// 북 동 남 서 
	static int[] dx = {-1,0,1,0};
	static int[] dy = {0,1,0,-1};
	
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int N = Integer.parseInt(br.readLine());
		int[][] map = new int[101][101];
		int x = 50;
		int y = 50;
		int maxX = 50;
		int maxY = 50;
		int minX = 50;
		int minY = 50;
		int dir = 2;
		map[x][y] = 1;
		
		String command = br.readLine();
		// 1이 . 2이 # 
		for(int i = 0 ; i < N ; i++) {
			char tmp = command.charAt(i);
			
			if(tmp == 'L') {
				dir -= 1;
				if(dir == -1) dir = 3;
			}
			else if(tmp == 'R') {
				dir = (dir + 1) % 4; 
			}
			else if(tmp == 'F') {
				x = x + dx[dir];
				y = y + dy[dir];
				maxX = Math.max(maxX, x);
				maxY = Math.max(maxY, y);
				minX = Math.min(minX, x);
				minY = Math.min(minY, y);
				map[x][y] = 1;
			}
		}
		
		for(int i = minX ; i <= maxX ; i++) {
			for(int j = minY ; j <= maxY ; j++) {
				if(map[i][j] == 1) {
					sb.append(".");
				}else {
					sb.append("#");
				}
			}
			sb.append("\n");
		}
		System.out.println(sb);
	}

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

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

[Java/자바 백준 17822] 원판 돌리기  (0) 2022.02.17
[Java/자바 백준 17135] 캐슬 디펜스  (0) 2022.02.15
[Java/자바 백준 17837] 새로운 게임 2  (0) 2022.02.14
[Java/자바 프로그래머스] 방문길이  (0) 2022.02.04
[Java/자바 백준 19237] 어른 상어  (0) 2022.02.04
    '알고리즘/문제 풀이' 카테고리의 다른 글
    • [Java/자바 백준 17822] 원판 돌리기
    • [Java/자바 백준 17135] 캐슬 디펜스
    • [Java/자바 백준 17837] 새로운 게임 2
    • [Java/자바 프로그래머스] 방문길이
    광규니
    광규니
    공부 및 일상 올리기~

    티스토리툴바