스프링 공부하기 싫어서
풀어본 문제!
어려운 문제는 아니었다.
공부 편식하지말자아,,,
문제
https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
설계
알고리즘 설계[접근방법] : 그리디 알고리즘
n 입력값이 1000이므로 배열을 사용했다!크기가 1000인 배열을 만들고, 입력받은 주소에 1를 저장했다. > 1은 수리가 필요한 공간이다.반복문을 돌며 1이면 테이프를 쓰고, 테이프를 다 쓰면 새로운 테이프를 쓰는 형식으로 풀었다.
여기서 중요한 점은, 배열의 값이 0이더라도 그 전에 테이프를 썼다면 테이프 값을 줄여야 한다는 것이다!
코드
import java.util.Scanner;
public class Test_1449_수리공항승 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//배열 생성
int[] arr = new int[1002];
//물이 새는 곳 개수
int n = sc.nextInt();
//테이프 길이
int length = sc.nextInt();
//물 새는 곳 입력받기
for(int i=0; i<n; i++) {
arr[sc.nextInt()]=1;
}
//수리하기
int tape = 0;
int result = 0;
for(int i=0; i<arr.length; i++) {
//수리가 필요한 곳
if(arr[i]==1 && 0<tape) { tape--; arr[i]=2;}
else if(arr[i]==1 && tape<=0) { result++; tape=length-1;}
//수리가 필요 없는 곳
else if(arr[i]==0 && tape!=length) tape--;
}
//출력
System.out.println(result);
}
}
(❁´◡`❁)
끝!
'[자료구조] 알고리즘' 카테고리의 다른 글
[백준] 14719번 빗물(구현_JAVA) (0) | 2023.07.03 |
---|---|
[백준] 21610번_마법사 상어와 비바라기 (구현_JAVA) (0) | 2023.06.29 |
[백준] 1343번_폴리오미노 (그리디 알고리즘_JAVA) (0) | 2023.06.27 |
[백준] 11052번 카드 구매하기 (다이나믹 프로그래밍_JAVA) (2) | 2023.06.24 |
[백준] 1219번 연속합 (다이나믹 프로그래밍_JAVA) (0) | 2023.06.23 |