[스터디] Java 알고리즘 2문제 (25.02.21)

2025. 2. 21. 17:47·LG 유플러스 유레카 SW/스터디

1. 백준 1697 - 숨바꼭질

  • BFS로 최단 경로 찾기
  • N(0 ≤ N ≤ 100,000), K(0 ≤ K ≤ 100,000) 범위 내에서 조건 처리
  • 순간이동, 전진, 후진의 3가지 조건
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int K = sc.nextInt();

		boolean[] visited = new boolean[100001];
		Queue<int[]> q = new LinkedList<>();
		int time = 0;

		q.offer(new int[] { N, time });
		visited[N] = true;

		while (!q.isEmpty()) {
			int[] arr = q.poll();
			int cur = arr[0], curTime = arr[1];
			if (cur == K) {
				System.out.print(curTime);
				break;
			}

			if (cur * 2 <= 100000 && !visited[cur * 2]) {
				q.offer(new int[] { cur * 2, curTime + 1 });
				visited[cur * 2] = true;
			}
			if (cur + 1 <= 100000 && !visited[cur + 1]) {
				q.offer(new int[] { cur + 1, curTime + 1 });
				visited[cur + 1] = true;
			}
			if (cur - 1 >= 0 && !visited[cur - 1]) {
				q.offer(new int[] { cur - 1, curTime + 1 });
				visited[cur - 1] = true;
			}
		}

		sc.close();
	}

}

2. SWEA 2805 D3 - 농작물 수확하기

import java.util.Scanner;

public class Solution {
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		

		for (int i = 0; i < T; i++) {
			int N = sc.nextInt();
			int[][] farm = new int[N][N];
			int sum = 0;

			sc.nextLine();
			for (int j = 0; j < N; j++) {
				String str = sc.nextLine();
				for (int a = 0; a < N; a++) {
					farm[j][a] = str.charAt(a) - '0';
					sum += farm[j][a]; // 전체 합 구하기
				}
			}

			// 전체 - 왼쪽 위 하얀 부분 삼각형 
			for (int x = 0; x < N / 2; x++) {
				for (int y = 0; y < N / 2 - x; y++) {
					sum -= farm[x][y];
				}
			}

			// 전체 - 오른쪽 위 하얀 부분 삼각형 
			for (int x = 0; x < N / 2; x++) {
				for (int y = N / 2 + x + 1; y < N; y++) {
					sum -= farm[x][y];
				}
			}

			// 전체 - 왼쪽 아래 하얀 부분 삼각형 
			for (int x = N / 2 + 1; x < N; x++) {
				for (int y = 0; y < x - N / 2; y++) {
					sum -= farm[x][y];
				}
			}

			// 전체 - 오른쪽 아래 하얀 부분 삼각형 
			for (int x = N / 2 + 1; x < N; x++) {
				for (int y = N - x + N / 2; y < N; y++) {
					sum -= farm[x][y];
				}
			}

			sb.append("#").append(i+1).append(" ").append(sum).append("\n");

		}
		System.out.println(sb);
		sc.close();

	}

}
728x90
반응형

'LG 유플러스 유레카 SW > 스터디' 카테고리의 다른 글

[스터디] Java 알고리즘 2문제 (25.02.25)  (0) 2025.02.25
[스터디] MST 2문제 출제 및 풀기 + 도전 문제 2문제 (25.02.24)  (0) 2025.02.24
[스터디] Java 도전 문제 3문제 (25.02.20)  (0) 2025.02.20
[스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)  (1) 2025.02.19
[스터디] Java 프로그래머스 기초 24문제 & 머쓱이 획득 (25.02.18)  (1) 2025.02.18
'LG 유플러스 유레카 SW/스터디' 카테고리의 다른 글
  • [스터디] Java 알고리즘 2문제 (25.02.25)
  • [스터디] MST 2문제 출제 및 풀기 + 도전 문제 2문제 (25.02.24)
  • [스터디] Java 도전 문제 3문제 (25.02.20)
  • [스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    제주지역혁신플랫폼지능형서비스사업단
    디지랩챌린지
    Queue
    heap
    exhaustive search
    큐
    Stack
    기술로바꾸는세상
    제주해커톤
    디지털혁신
    완전 탐색
    힙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[스터디] Java 알고리즘 2문제 (25.02.21)
상단으로

티스토리툴바