728x90
반응형
상하좌우
문제
NxN정사각형 공간의 가장 왼쪽 위 좌표는 (1, 1), 가장 오른쪽 아래는 (N, N) 이다.
여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다.
L(왼쪽 한칸) R(오른쪽 한칸) U(위로 한칸) D(아래로 한칸) 움직이는 의미이고,
이 4개의 문자로 된 문자열대로 움직였을때 최종 도착할 지점의 좌표를 구하라
단 NxN 공간을 벗어나 는 움직임은 무시됨(
입력예시 R R R U D D
출력예시 3 4
더보기
해결방법
ㅐㅐ
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// N을 입력받기
int n = sc.nextInt();
sc.nextLine(); // 버퍼 비우기
String[] plans = sc.nextLine().split(" ");
int x = 1, y = 1;
// L, R, U, D에 따른 이동 방향
int[] dx = {0, 0, -1, 1};
int[] dy = {-1, 1, 0, 0};
char[] moveTypes = {'L', 'R', 'U', 'D'};
// 이동 계획을 하나씩 확인
for (int i = 0; i < plans.length; i++) {
char plan = plans[i].charAt(0);
// 이동 후 좌표 구하기
int nx = -1, ny = -1;
for (int j = 0; j < 4; j++) {
if (plan == moveTypes[j]) {
nx = x + dx[j];
ny = y + dy[j];
}
}
// 공간을 벗어나는 경우 무시
if (nx < 1 || ny < 1 || nx > n || ny > n) continue;
// 이동 수행
x = nx;
y = ny;
}
System.out.println(x + " " + y);
}
시각
문제
정수 N이 입력되면
0시 0분 0초부터 N시 59분 59초까지 모든 시각 중
3이 하나라도 포함되는 경우의수를 구하라
입력예시 5
출력예시 11475
더보기
해결방법
ㅐㅐ
// 특정한 시각 안에 '3'이 포함되어 있는지의 여부
public static boolean check(int h, int m, int s) {
if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
return true;
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// H를 입력받기
int h = sc.nextInt();
int cnt = 0;
for (int i = 0; i <= h; i++) {
for (int j = 0; j < 60; j++) {
for (int k = 0; k < 60; k++) {
// 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if (check(i, j, k)) cnt++;
}
}
}
System.out.println(cnt);
}
왕실의 나이트
문제
0
입력예시 a1
출력예시 2
더보기
해결방법
ㅐㅐ
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 현재 나이트의 위치 입력받기
String inputData = sc.nextLine();
int row = inputData.charAt(1) - '0';
int column = inputData.charAt(0) - 'a' + 1;
// 나이트가 이동할 수 있는 8가지 방향 정의
int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2};
int[] dy = {-1, -2, -2, -1, 1, 2, 2, 1};
// 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인
int result = 0;
for (int i = 0; i < 8; i++) {
// 이동하고자 하는 위치 확인
int nextRow = row + dx[i];
int nextColumn = column + dy[i];
// 해당 위치로 이동이 가능하다면 카운트 증가
if (nextRow >= 1 && nextRow <= 8 && nextColumn >= 1 && nextColumn <= 8) {
result += 1;
}
}
System.out.println(result);
}
게임 개발
문제
0
더보기
해결방법
ㅐㅐ
public static int n, m, x, y, direction;
// 방문한 위치를 저장하기 위한 맵을 생성하여 0으로 초기화
public static int[][] d = new int[50][50];
// 전체 맵 정보
public static int[][] arr = new int [50][50];
// 북, 동, 남, 서 방향 정의
public static int dx[] = {-1, 0, 1, 0};
public static int dy[] = {0, 1, 0, -1};
// 왼쪽으로 회전
public static void turn_left() {
direction -= 1;
if (direction == -1) direction = 3;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// N, M을 공백을 기준으로 구분하여 입력받기
n = sc.nextInt();
m = sc.nextInt();
// 현재 캐릭터의 X 좌표, Y 좌표, 방향을 입력받기
x = sc.nextInt();
y = sc.nextInt();
direction = sc.nextInt();
d[x][y] = 1; // 현재 좌표 방문 처리
// 전체 맵 정보를 입력 받기
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = sc.nextInt();
}
}
// 시뮬레이션 시작
int cnt = 1;
int turn_time = 0;
while (true) {
// 왼쪽으로 회전
turn_left();
int nx = x + dx[direction];
int ny = y + dy[direction];
// 회전한 이후 정면에 가보지 않은 칸이 존재하는 경우 이동
if (d[nx][ny] == 0 && arr[nx][ny] == 0) {
d[nx][ny] = 1;
x = nx;
y = ny;
cnt += 1;
turn_time = 0;
continue;
}
// 회전한 이후 정면에 가보지 않은 칸이 없거나 바다인 경우
else turn_time += 1;
// 네 방향 모두 갈 수 없는 경우
if (turn_time == 4) {
nx = x - dx[direction];
ny = y - dy[direction];
// 뒤로 갈 수 있다면 이동하기
if (arr[nx][ny] == 0) {
x = nx;
y = ny;
}
// 뒤가 바다로 막혀있는 경우
else break;
turn_time = 0;
}
}
System.out.println(cnt);
}
럭키 스트레이트 (핵심 유형)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
해결방법
ㅐㅐ
public static String str;
public static int summary = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
str = sc.next();
// 왼쪽 부분의 자릿수의 합 더하기
for (int i = 0; i < str.length() / 2; i++) {
summary += str.charAt(i) - '0';
}
// 오른쪽 부분의 자릿수의 합 빼기
for (int i = str.length() / 2; i < str.length(); i++) {
summary -= str.charAt(i) - '0';
}
// 왼쪽 부분과 오른쪽 부분의 자릿수 합이 동일한지 검사
if (summary == 0) System.out.println("LUCKY");
else System.out.println("READY");
}
문자열 재정렬 (Facebook 인터뷰 기출)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
해결방법
ㅐㅐ
public static String str;
public static ArrayList<Character> result = new ArrayList<Character>();
public static int value = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
str = sc.next();
// 문자를 하나씩 확인하며
for (int i = 0; i < str.length(); i++) {
// 알파벳인 경우 결과 리스트에 삽입
if (Character.isLetter(str.charAt(i))) {
result.add(str.charAt(i));
}
// 숫자는 따로 더하기
else {
value += str.charAt(i) - '0';
}
}
// 알파벳을 오름차순으로 정렬
Collections.sort(result);
// 알파벳을 차례대로 출력
for (int i = 0; i < result.size(); i++) {
System.out.print(result.get(i));
}
// 숫자가 하나라도 존재하는 경우 가장 뒤에 출력
if (value != 0) System.out.print(value);
System.out.println();
}
문자열 압축 (카카오)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
해결방법
ㅐㅐ
public int solution(String s) {
int answer = s.length();
// 1개 단위(step)부터 압축 단위를 늘려가며 확인
for (int step = 1; step < s.length() / 2 + 1; step++) {
String compressed = "";
String prev = s.substring(0, step); // 앞에서부터 step만큼의 문자열 추출
int cnt = 1;
// 단위(step) 크기만큼 증가시키며 이전 문자열과 비교
for (int j = step; j < s.length(); j += step) {
// 이전 상태와 동일하다면 압축 횟수(count) 증가
String sub = "";
for (int k = j; k < j + step; k++) {
if (k < s.length()) sub += s.charAt(k);
}
if (prev.equals(sub)) cnt += 1;
// 다른 문자열이 나왔다면(더 이상 압축하지 못하는 경우라면)
else {
compressed += (cnt >= 2)? cnt + prev : prev;
sub = "";
for (int k = j; k < j + step; k++) {
if (k < s.length()) sub += s.charAt(k);
}
prev = sub; // 다시 상태 초기화
cnt = 1;
}
}
// 남아있는 문자열에 대해서 처리
compressed += (cnt >= 2)? cnt + prev : prev;
// 만들어지는 압축 문자열이 가장 짧은 것이 정답
answer = Math.min(answer, compressed.length());
}
return answer;
}
자물쇠와 열쇠 (카카오)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
해결방법
ㅐㅐ
class Solution {
// 2차원 리스트 90도 회전하기
public static int[][] rotateMatrixBy90Degree(int[][] a) {
int n = a.length;
int m = a[0].length;
int[][] result = new int[n][m]; // 결과 리스트
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
result[j][n - i - 1] = a[i][j];
}
}
return result;
}
// 자물쇠의 중간 부분이 모두 1인지 확인
public static boolean check(int[][] newLock) {
int lockLength = newLock.length / 3;
for (int i = lockLength; i < lockLength * 2; i++) {
for (int j = lockLength; j < lockLength * 2; j++) {
if (newLock[i][j] != 1) {
return false;
}
}
}
return true;
}
public boolean solution(int[][] key, int[][] lock) {
int n = lock.length;
int m = key.length;
// 자물쇠의 크기를 기존의 3배로 변환
int[][] newLock = new int[n * 3][n * 3];
// 새로운 자물쇠의 중앙 부분에 기존의 자물쇠 넣기
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
newLock[i + n][j + n] = lock[i][j];
}
}
// 4가지 방향에 대해서 확인
for (int rotation = 0; rotation < 4; rotation++) {
key = rotateMatrixBy90Degree(key); // 열쇠 회전
for (int x = 0; x < n * 2; x++) {
for (int y = 0; y < n * 2; y++) {
// 자물쇠에 열쇠를 끼워 넣기
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
newLock[x + i][y + j] += key[i][j];
}
}
// 새로운 자물쇠에 열쇠가 정확히 들어 맞는지 검사
if (check(newLock)) return true;
// 자물쇠에서 열쇠를 다시 빼기
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
newLock[x + i][y + j] -= key[i][j];
}
}
}
}
}
return false;
}
}
뱀 (삼성)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
class Node {
private int time;
private char direction;
public Node(int time, char direction) {
this.time = time;
this.direction = direction;
}
public int getTime() {
return this.time;
}
public char getDirection() {
return this.direction;
}
}
class Position {
private int x;
private int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
}
public class Main {
public static int n, k, l;
public static int[][] arr = new int[101][101]; // 맵 정보
public static ArrayList<Node> info = new ArrayList<>(); // 방향 회전 정보
// 처음에는 오른쪽을 보고 있으므로(동, 남, 서, 북)
public static int dx[] = {0, 1, 0, -1};
public static int dy[] = {1, 0, -1, 0};
public static int turn(int direction, char c) {
if (c == 'L') direction = (direction == 0)? 3 : direction - 1;
else direction = (direction + 1) % 4;
return direction;
}
public static int simulate() {
int x = 1, y = 1; // 뱀의 머리 위치
arr[x][y] = 2; // 뱀이 존재하는 위치는 2로 표시
int direction = 0; // 처음에는 동쪽을 보고 있음
int time = 0; // 시작한 뒤에 지난 '초' 시간
int index = 0; // 다음에 회전할 정보
// 뱀이 차지하고 있는 위치 정보(꼬리가 앞쪽)
Queue<Position> q = new LinkedList<>();
q.offer(new Position(x, y));
while (true) {
int nx = x + dx[direction];
int ny = y + dy[direction];
// 맵 범위 안에 있고, 뱀의 몸통이 없는 위치라면
if (1 <= nx && nx <= n && 1 <= ny && ny <= n && arr[nx][ny] != 2) {
// 사과가 없다면 이동 후에 꼬리 제거
if (arr[nx][ny] == 0) {
arr[nx][ny] = 2;
q.offer(new Position(nx, ny));
Position prev = q.poll();
arr[prev.getX()][prev.getY()] = 0;
}
// 사과가 있다면 이동 후에 꼬리 그대로 두기
if (arr[nx][ny] == 1) {
arr[nx][ny] = 2;
q.offer(new Position(nx, ny));
}
}
// 벽이나 뱀의 몸통과 부딪혔다면
else {
time += 1;
break;
}
// 다음 위치로 머리를 이동
x = nx;
y = ny;
time += 1;
if (index < l && time == info.get(index).getTime()) { // 회전할 시간인 경우 회전
direction = turn(direction, info.get(index).getDirection());
index += 1;
}
}
return time;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
// 맵 정보(사과 있는 곳은 1로 표시)
for (int i = 0; i < k; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
arr[a][b] = 1;
}
// 방향 회전 정보 입력
l = sc.nextInt();
for (int i = 0; i < l; i++) {
int x = sc.nextInt();
char c = sc.next().charAt(0);
info.add(new Node(x, c));
}
System.out.println(simulate());
}
}
기둥과 보 설치 (카카오)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
해결방법
ㅐㅐ
class Node implements Comparable<Node> {
private int x;
private int y;
private int stuff;
public Node(int x, int y, int stuff) {
this.x = x;
this.y = y;
this.stuff = stuff;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public int getStuff() {
return this.stuff;
}
// 정렬 기준 설정 (x, y, stuff 순서대로 오름차순)
@Override
public int compareTo(Node other) {
if (this.x == other.x && this.y == other.y) {
return Integer.compare(this.stuff, other.stuff);
}
if (this.x == other.x) {
return Integer.compare(this.y, other.y);
}
return Integer.compare(this.x, other.x);
}
}
class Solution {
// 현재 설치된 구조물이 '가능한' 구조물인지 확인하는 함수
public boolean possible(ArrayList<ArrayList<Integer>> answer) {
for (int i = 0; i < answer.size(); i++) {
int x = answer.get(i).get(0);
int y = answer.get(i).get(1);
int stuff = answer.get(i).get(2);
if (stuff == 0) { // 설치된 것이 '기둥'인 경우
boolean check = false;
// '바닥 위'라면 정상
if (y == 0) check = true;
// '보의 한 쪽 끝 부분 위' 혹은 '다른 기둥 위'라면 정상
for (int j = 0; j < answer.size(); j++) {
if (x - 1 == answer.get(j).get(0) && y == answer.get(j).get(1) && 1 == answer.get(j).get(2)) {
check = true;
}
if (x == answer.get(j).get(0) && y == answer.get(j).get(1) && 1 == answer.get(j).get(2)) {
check = true;
}
if (x == answer.get(j).get(0) && y - 1 == answer.get(j).get(1) && 0 == answer.get(j).get(2)) {
check = true;
}
}
if (!check) return false; // 아니라면 거짓(False) 반환
}
else if (stuff == 1) { // 설치된 것이 '보'인 경우
boolean check = false;
boolean left = false;
boolean right = false;
// '한쪽 끝부분이 기둥 위' 혹은 '양쪽 끝부분이 다른 보와 동시에 연결'이라면 정상
for (int j = 0; j < answer.size(); j++) {
if (x == answer.get(j).get(0) && y - 1 == answer.get(j).get(1) && 0 == answer.get(j).get(2)) {
check = true;
}
if (x + 1 == answer.get(j).get(0) && y - 1 == answer.get(j).get(1) && 0 == answer.get(j).get(2)) {
check = true;
}
if (x - 1 == answer.get(j).get(0) && y == answer.get(j).get(1) && 1 == answer.get(j).get(2)) {
left = true;
}
if (x + 1 == answer.get(j).get(0) && y == answer.get(j).get(1) && 1 == answer.get(j).get(2)) {
right = true;
}
}
if (left && right) check = true;
if (!check) return false; // 아니라면 거짓(False) 반환
}
}
return true;
}
public int[][] solution(int n, int[][] build_frame) {
ArrayList<ArrayList<Integer>> answer = new ArrayList<ArrayList<Integer>>();
// 작업(frame)의 개수는 최대 1,000개
for (int i = 0; i < build_frame.length; i++) {
int x = build_frame[i][0];
int y = build_frame[i][1];
int stuff = build_frame[i][2];
int operate = build_frame[i][3];
if (operate == 0) { // 삭제하는 경우
// 일단 삭제를 해 본 뒤에
int index = 0;
for (int j = 0; j < answer.size(); j++) {
if (x == answer.get(j).get(0) && y == answer.get(j).get(1) && stuff == answer.get(j).get(2)) {
index = j;
}
}
ArrayList<Integer> erased = answer.get(index);
answer.remove(index);
if (!possible(answer)) { // 가능한 구조물인지 확인
answer.add(erased); // 가능한 구조물이 아니라면 다시 설치
}
}
if (operate == 1) { // 설치하는 경우
// 일단 설치를 해 본 뒤에
ArrayList<Integer> inserted = new ArrayList<Integer>();
inserted.add(x);
inserted.add(y);
inserted.add(stuff);
answer.add(inserted);
if (!possible(answer)) { // 가능한 구조물인지 확인
answer.remove(answer.size() - 1); // 가능한 구조물이 아니라면 다시 제거
}
}
}
// 정렬 수행
ArrayList<Node> ans = new ArrayList<Node>();
for (int i = 0; i < answer.size(); i++) {
ans.add(new Node(answer.get(i).get(0), answer.get(i).get(1), answer.get(i).get(2)));
}
Collections.sort(ans);
// 배열로 바꾸어 반환
int[][] res = new int[ans.size()][3];
for (int i = 0; i < ans.size(); i++) {
res[i][0] = ans.get(i).getX();
res[i][1] = ans.get(i).getY();
res[i][2] = ans.get(i).getStuff();
}
return res;
}
}
치킨 배달 (삼성)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
class Combination {
private int n;
private int r;
private int[] now; // 현재 조합
private ArrayList<ArrayList<Position>> result; // 모든 조합
public ArrayList<ArrayList<Position>> getResult() {
return result;
}
public Combination(int n, int r) {
this.n = n;
this.r = r;
this.now = new int[r];
this.result = new ArrayList<ArrayList<Position>>();
}
public void combination(ArrayList<Position> arr, int depth, int index, int target) {
if (depth == r) {
ArrayList<Position> temp = new ArrayList<>();
for (int i = 0; i < now.length; i++) {
temp.add(arr.get(now[i]));
}
result.add(temp);
return;
}
if (target == n) return;
now[index] = target;
combination(arr, depth + 1, index + 1, target + 1);
combination(arr, depth, index, target + 1);
}
}
class Position {
private int x;
private int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
}
public class Main {
public static int n, m;
public static int[][] arr = new int[50][50];
public static ArrayList<Position> chicken = new ArrayList<>();
public static ArrayList<Position> house = new ArrayList<>();
public static int getSum(ArrayList<Position> candidates) {
int result = 0;
// 모든 집에 대하여
for (int i = 0; i < house.size(); i++) {
int hx = house.get(i).getX();
int hy = house.get(i).getY();
// 가장 가까운 치킨 집을 찾기
int temp = (int) 1e9;
for (int j = 0; j < candidates.size(); j++) {
int cx = candidates.get(j).getX();
int cy = candidates.get(j).getY();
temp = Math.min(temp, Math.abs(hx - cx) + Math.abs(hy - cy));
}
// 가장 가까운 치킨 집까지의 거리를 더하기
result += temp;
}
// 치킨 거리의 합 반환
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for (int r = 0; r < n; r++) {
for (int c = 0; c < n; c++) {
arr[r][c] = sc.nextInt();
if (arr[r][c] == 1) house.add(new Position(r, c)); // 일반 집
else if (arr[r][c] == 2) chicken.add(new Position(r, c)); // 치킨집
}
}
// 모든 치킨 집 중에서 m개의 치킨 집을 뽑는 조합 계산
Combination comb = new Combination(chicken.size(), m);
comb.combination(chicken, 0, 0, 0);
ArrayList<ArrayList<Position>> chickenList = comb.getResult();
// 치킨 거리의 합의 최소를 찾아 출력
int result = (int) 1e9;
for (int i = 0; i < chickenList.size(); i++) {
result = Math.min(result, getSum(chickenList.get(i)));
}
System.out.println(result);
}
}
외벽 점검 (카카오)
문제
0
입력예시 ㅇ
출력예시 ㅇ
더보기
해결방법
ㅐㅐ
class Permutation {
private int n;
private int r;
private int[] now; // 현재 순열
private ArrayList<ArrayList<Integer>> result; // 모든 순열
public ArrayList<ArrayList<Integer>> getResult() {
return result;
}
public Permutation(int n, int r) {
this.n = n;
this.r = r;
this.now = new int[r];
this.result = new ArrayList<ArrayList<Integer>>();
}
public void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public void permutation(int[] arr, int depth) {
// 현재 순열의 길이가 r일 때 결과 저장
if (depth == r) {
ArrayList<Integer> temp = new ArrayList<>();
for (int i = 0; i < now.length; i++) {
temp.add(now[i]);
}
result.add(temp);
return;
}
for (int i = depth; i < n; i++) {
swap(arr, i, depth);
now[depth] = arr[depth];
permutation(arr, depth + 1);
swap(arr, i, depth);
}
}
}
class Solution {
public int solution(int n, int[] weak, int[] dist) {
// 길이를 2배로 늘려서 '원형'을 일자 형태로 변경
ArrayList<Integer> weakList = new ArrayList<Integer>();
for (int i = 0; i < weak.length; i++) {
weakList.add(weak[i]);
}
for (int i = 0; i < weak.length; i++) {
weakList.add(weak[i] + n);
}
// 투입할 친구 수의 최솟값을 찾아야 하므로 len(dist) + 1로 초기화
int answer = dist.length + 1;
// 친구 정보를 이용해 모든 순열 계산
Permutation perm = new Permutation(dist.length, dist.length);
perm.permutation(dist, 0);
ArrayList<ArrayList<Integer>> distList = perm.getResult();
// 0부터 length - 1까지의 위치를 각각 시작점으로 설정
for (int start = 0; start < weak.length; start++) {
// 친구를 나열하는 모든 경우 각각에 대하여 확인
for (int i = 0; i < distList.size(); i++) {
int cnt = 1; // 투입할 친구의 수
// 해당 친구가 점검할 수 있는 마지막 위치
int position = weakList.get(start) + distList.get(i).get(cnt - 1);
// 시작점부터 모든 취약한 지점을 확인
for (int index = start; index < start + weak.length; index++) {
// 점검할 수 있는 위치를 벗어나는 경우
if (position < weakList.get(index)) {
cnt += 1; // 새로운 친구를 투입
if (cnt > dist.length) { // 더 투입이 불가능하다면 종료
break;
}
position = weakList.get(index) + distList.get(i).get(cnt - 1);
}
}
answer = Math.min(answer, cnt); // 최솟값 계산
}
}
if (answer > dist.length) {
return -1;
}
return answer;
}
}
728x90
반응형
'Language > Java' 카테고리의 다른 글
객체지형 4대 패러다임(캡슐화, 추상화, 다형성, 상속) (0) | 2021.05.26 |
---|---|
해시, 스택/큐, 힙, 정렬, 완전탐색, DFS/BFS (0) | 2021.05.12 |
그리디 - 당장 좋은 것만 선택하는 그리디 (0) | 2021.05.05 |
DFS/BFS - 탐색 알고리즘 (0) | 2021.05.05 |
[함수형 프로그래밍] lambda, functional interface, method reference (0) | 2021.04.23 |