[Java] 백준 1449번 (수리공 항승)

2024. 4. 6. 15:00·BOJ, Programmers

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

 

1449번: 수리공 항승

첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나

www.acmicpc.net

 

알고리즘 분류

  • 그리디
  • 정렬

 

풀이

그리디 알고리즘을 사용해 풀었다. 

핵심 로직은 이러하다.

 

먼저 StringTokenizer로 물이 세는 곳을 저장한뒤,

새는 곳이 차례대로 있어야 최소한의 테이프를 쓰게 되니 정렬까지 진행했다.

st = new StringTokenizer(br.readLine());
for (int i = 0; i < temp.length; i++) {
	temp[i] = Integer.parseInt(st.nextToken());
} // for
		
Arrays.sort(temp);

 

 

 

만약 현재 붙인 테이프 길이가 물이 새는 거리보다 길면 지나가고 

만약 그러지 않으면 (짧다면) 그 새는 곳부터 다시 길이를 재고 테이프의 수량을 하나 늘린다.

for (int i = 0; i < temp.length; i++) {
			
	if(length >= temp[i]) continue;
	else {
		length = temp[i] + l - 1;
		cnt++;
		}	
} // for

 

 

 

아래는 전체 정답 코드이다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int l = Integer.parseInt(st.nextToken());
		
		int [] temp = new int [n];
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < temp.length; i++) {
			temp[i] = Integer.parseInt(st.nextToken());
		} // for
		
		Arrays.sort(temp); // 거리가 순서대로 있어야 최소한의 테이프가 필요하므로 정렬
		int cnt = 0; // 테이프 수량
		int length = 0; // 현재 붙인 테이프의 길이
		
		for (int i = 0; i < temp.length; i++) {
			
			if(length >= temp[i]) continue;
			else {
				length = temp[i] + l - 1;
				cnt++;
			}
			
		} // for

		System.out.println(cnt);
	}
}

'BOJ, Programmers' 카테고리의 다른 글

[Java] 백준 1448 번 (삼각형 만들기)  (0) 2024.04.08
[Java] 백준 2725번 (보이는 점의 개수)  (2) 2024.04.06
[Java] 백준 1577 (도로의 개수)  (2) 2024.04.05
[Java] 백준 1926 (그림) 자바 문제 풀이  (0) 2024.04.05
[Java] 프로그래머스 (이중우선 순위 큐 )  (0) 2024.04.05
'BOJ, Programmers' 카테고리의 다른 글
  • [Java] 백준 1448 번 (삼각형 만들기)
  • [Java] 백준 2725번 (보이는 점의 개수)
  • [Java] 백준 1577 (도로의 개수)
  • [Java] 백준 1926 (그림) 자바 문제 풀이
Economy98
Economy98
공부하고 기록하기
  • Economy98
    Economy_Dev
    Economy98
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Spring Framework (12)
      • BOJ, Programmers (22)
      • Java (6)
      • JDBC (6)
      • JPA (9)
      • Spring Transaction (3)
      • Algorithm (1)
      • Web (5)
      • Projects (2)
        • 쇼핑몰 프로젝트 (0)
        • 열람실 & 도서관 프로젝트 (2)
      • Network (2)
      • 나의 공부방 (5)
      • 끄적끄적 (1)
      • Error Log (3)
      • CS (0)
  • 블로그 메뉴

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

    • Github
  • 공지사항

  • 인기 글

  • 태그

    예외 처리
    자바
    다이나믹 프로그래밍
    브루트포스 알고리즘
    백준 풀이
    자바 문제
    트랜잭션
    java
    restful api
    스프링부트
    그리디 알고리즘
    스프링
    JPA
    자바 문제 풀이
    백준
    정렬
    백준 자바 풀이
    Spring
    jdbc
    propagation
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Economy98
[Java] 백준 1449번 (수리공 항승)
상단으로

티스토리툴바