[BOJ] 백준_1449번_수리공 항승_C/C++백준 알고리즘2022. 1. 25. 10:00
목차
문제 출처
https://www.acmicpc.net/problem/1449
문제 설명
코드
//[BOJ] 1449번 수리공 항승
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, l, tape=0;
double point = 0.0;
cin >> n >> l;
int* arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
sort(arr, arr+n);
for (int i = 0; i < n; i++)
{
if (arr[i] > point)
{
point = arr[i] - 0.5 + l;
tape++;
}
}
cout << tape << endl;
return 0;
}
풀이 과정
n과 l을 차례로 입력받은 후 n만큼의 정수형 배열을 할당한다. 여기에 문제가 있는 파이프 위치를 담는다. if문 하나로 해당 위치에 테이프를 붙일지 넘어갈 지 결정하였는데 point라는 double형 변수를 사용했다. 0.5라는 간격때문에 double로 했지만 굳이 그렇지 않고 int형으로 선언해줘도 된다. point는 테이프가 어디에서 끊켜있는지를 의미하도록 작성했다. 만약 i번째 위치해 있는 물 새는 파이프가 테이프가 붙여진 위치보다 앞에 있는지, 뒤에 있는지 판단하고 만약 뒤에 있다면 테이프를 길이의 맞게 붙인다고 가정했을 때 테이프가 끝나는 지점인 i번째 파이프 위치 -0.5 +l을 저장하도록 하고 테이프를 하나 쓴 것으로 간주해 tape에 1을 더한다. 다음 상황도 마찬가지로 테이프가 앞섰는지, 문제 지점이 앞섰는지 판단하고 테이프를 붙이거나 그냥 넘어간다. 마지막엔 tape를 출력한다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_2847번_게임을 만든 동준이_C/C++ (0) | 2022.01.27 |
---|---|
[BOJ] 백준_1260번_DFS와 BFS_C/C++ (0) | 2022.01.26 |
[BOJ] 백준_5585번_거스름돈_C/C++ (0) | 2022.01.23 |
[BOJ] 백준_22864번_피로도(재채점)_C/C++ (0) | 2022.01.22 |
[BOJ] 백준_11000번_강의실 배정_C/C++ (0) | 2022.01.21 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!