[ 문제 ]
농부 상근이는 마당에 심기 위한 나무 묘목 n개를 구입했다. 묘목 하나를 심는데 걸리는 시간은 1일이고, 상근이는 각 묘목이 다 자라는데 며칠이 걸리는지 정확하게 알고 있다.
상근이는 마을 이장님을 초대해 자신이 심은 나무를 자랑하려고 한다. 이장님을 실망시키면 안되기 때문에, 모든 나무가 완전히 자란 이후에 이장님을 초대하려고 한다. 즉, 마지막 나무가 다 자란 다음날 이장님을 초대할 것이다.
상근이는 나무를 심는 순서를 신중하게 골라 이장님을 최대한 빨리 초대하려고 한다. 이장님을 며칠에 초대할 수 있을까?
[ 코드 ]
1. 내 코드
int n = int.Parse(Console.ReadLine());
int[] arr = Console.ReadLine().Split().Select(int.Parse).ToArray();
int[] day = new int[n];
Array.Sort(arr);
Array.Reverse(arr);
for (int i = 0; i < n; i++)
{
day[i] = i + 1 + arr[i]; // 묘목 심는데 걸리는 시간 + 앞에 나무가 걸린시간
}
// 모든 나무가 자라야 하니 최대값을 구하고 자란 그 다음날 초대를 하니 +1을 해준다.
Console.Write(day.Max() + 1);
2. 다른 사람 코드
using System;
using System.Linq;
class Program {
static void Main() {
int n = int.Parse(Console.ReadLine());
int[] t = Console.ReadLine().Split().Select(int.Parse).ToArray();
Array.Sort(t);
Array.Reverse(t);
long ans = 0;
for(int i = 0; i < n; i++) {
ans = Math.Max(ans, t[i] + i + 2);
}
Console.WriteLine(ans);
}
}
푸는 방식만 알면 코드는 거의 비슷한 것 같다.
[ 문제설명 ]
사실 그냥 날짜별로 하나하나 해봐서 바보라고 불러도돼요.........
괄호는 묘목심는날이라 +1가 되는날을 뜻하는 것!!
나무가 1이 되면 다자란 나무가
1 2 3 4 5 6 7... < day
() 4 3 2 1 <묘목들
() 3 2 1
() 3 2 1
() 2 1
다 자란 다음 날 이장님을 초대하기 때문에 +1
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/9237
9237번: 이장님 초대
입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 ≤ ti ≤ 1,000,000)
www.acmicpc.net
'Language > C#' 카테고리의 다른 글
[C#] 백준 1002번 터렛 (두 원 사이의 접점의 개수) (0) | 2024.04.26 |
---|---|
[C#] 백준 16479번 컵라면 측정하기 (등변사다리꼴 높이구하기) (0) | 2024.04.24 |
[C#] 백준 1026번 보물 (0) | 2024.04.22 |
[C#] 백준 27434번 팩토리얼 3 못푼문제 (실패) (4) | 2024.04.20 |
[C#] 백준 11399번 ATM (1) | 2024.04.14 |