반응형

https://www.acmicpc.net/problem/5014

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

package com.ji.beakjoon.bfs;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

/**
 * 스타트링크
 * 
 * @author ji
 *
 */
/*
 * 1. 시작점부터 큐에 넣어 up, down 이동경로를 다시 큐에 넣는다.
 * 
 * 2. 큐에서 나온 점이 도착점과 같다면 종료한다.
 * 
 * 3. 범위가 0보다 작거나 최대값인 F보다 크다면 패스한다.
 * 
 */
public class StartLink {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] floorInfos = br.readLine().split(" ");
		int F = Integer.valueOf(floorInfos[0]);
		int S = Integer.valueOf(floorInfos[1]);
		int G = Integer.valueOf(floorInfos[2]);
		int U = Integer.valueOf(floorInfos[3]);
		int D = Integer.valueOf(floorInfos[4]);

		// 방문한 층 배열에 저장
		int[] visitFloorArr = new int[F + 1];
		Queue<Integer> que = new LinkedList<Integer>();
		que.offer(S);
		visitFloorArr[S] = 1;

		int result = -1;
		while (!que.isEmpty()) {
			int cur = que.poll();
			if (cur == G) {
				result = visitFloorArr[cur] - 1;
				System.out.println(result);
				return;
			}

			// Up 버튼을 눌렀을 때 꼭대기 층보다 작거나 같을 경우
			// 방문 하지 않은 경우
			if (cur + U <= F && visitFloorArr[cur + U] == 0) {
				visitFloorArr[cur + U] = visitFloorArr[cur] + 1;
				que.add(cur + U);
			}

			// Down 버튼을 눌렀을때 건물은 1층 부터 시작 하기 때문에 0보다 커야함 
			// 방문 하지 않은 경우
			if (cur - D > 0 && visitFloorArr[cur - D] == 0) {
				visitFloorArr[cur - D] = visitFloorArr[cur] + 1;
				que.add(cur - D);
			}

		}
		
		//(만약, U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다)
		System.out.println("use the stairs");

	}

}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 토너먼트  (0) 2021.08.07
[백준] 로봇청소기  (0) 2021.08.07
[백준] 늑대와 양  (0) 2021.08.07
[백준] 스티커  (0) 2021.07.18
[백준] 연속합  (0) 2021.07.18
반응형

https://www.acmicpc.net/problem/16956

 

16956번: 늑대와 양

크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게

www.acmicpc.net

package com.ji.beakjoon.bfs;

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

public class WolfSheep {

	static char map[][];
	static int[] dx = { 0, 0, 1, -1 };
	static int[] dy = { 1, -1, 0, 0 };

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] mapSizeInfo = br.readLine().split(" ");
		int rowSize = Integer.valueOf(mapSizeInfo[0]);
		int colSize = Integer.valueOf(mapSizeInfo[1]);
		
		map = new char[rowSize][colSize];
		boolean flag = true;

		for (int i = 0; i < rowSize; i++) {
			String wolfSeepInfo = String.valueOf(br.readLine());
			for (int j = 0; j < colSize; j++)
				map[i][j] = wolfSeepInfo.charAt(j);
		}

		for (int i = 0; i < rowSize; i++) {
			for (int j = 0; j < colSize; j++) {
				
				//늑대 주변에 울타리를 감싸주면 되는 문제
				if (map[i][j] == 'W') {
					for (int k = 0; k < 4; k++) {
						int nx = i + dx[k];
						int ny = j + dy[k];

						//목장 안에 있을 경우만
						if(nx >=0 && nx< rowSize && ny >=0 && ny<colSize) {

							if (map[nx][ny] == '.') {
								map[nx][ny] = 'D';
							} else if (map[nx][ny] == 'S') {
								flag = false;
								System.out.println(0);
								return;
							}

						}

					}

				}

			}

		}

		if (!flag) {
			System.out.println(0);
		} else {
			System.out.println(1);
			for (int i = 0; i < rowSize; i++) {
				for (int j = 0; j < colSize; j++) {
					System.out.print(map[i][j]);
				}
				System.out.println();
			}

		}
	}
}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 로봇청소기  (0) 2021.08.07
[백준] 스타트링크  (0) 2021.08.07
[백준] 스티커  (0) 2021.07.18
[백준] 연속합  (0) 2021.07.18
[백준] 공유기 설치  (0) 2021.07.18
반응형

https://www.acmicpc.net/problem/1912

 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

package com.ji.beakjoon.dp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * 
 * @author ji
 *
 */
public class ConsecutiveSum {

	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		Integer numberCount = Integer.valueOf(br.readLine());

		int[] dp = new int[numberCount];
		int[] numbersArr = new int[numberCount];

		String[] inputNumbers = br.readLine().split(" ");
		for (int i = 0; i < numberCount; i++)
			numbersArr[i] = Integer.valueOf(inputNumbers[i]);
		
		dp[0] = numbersArr[0];
		int max = numbersArr[0];
		//bottom-up
		for(int i =1 ; i<numberCount; i++ ) {
				dp[i] = Math.max(dp[i-1]+numbersArr[i], numbersArr[i]);
				
				max = Math.max(max, dp[i]);
		}

		bw.write(String.valueOf(max));

		br.close();
		bw.flush();
		bw.close();
	}

}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 늑대와 양  (0) 2021.08.07
[백준] 스티커  (0) 2021.07.18
[백준] 공유기 설치  (0) 2021.07.18
[백준] 아기상어  (0) 2021.07.18
[백준] 출석체크  (0) 2021.07.11

+ Recent posts