코딩테스트/백준

[1333] 부재중 전화(C#)

봉두두 2022. 5. 6. 23:21
728x90

문제 이해하는데 좀 걸렸다. (어휘력을 길러야될 것 같음....😒 책 읽어야 돼 책)

결과적으로는 단순풀이법으로 아래와 같이 풀이를 했는데.

이 때 while 구문에서 if로 풀이하면 안 된다.

아래와 같은 Testcase의 경우에는 fail이 나기 때문.

"1곡 재생, 한 곡당 7초 길이, 2초마다 벨이 울릴 경우"

 

알고리즘 : 단순 구현, 시뮬레이션

 

string[] NLD = Console.ReadLine().Split(' ');

int N = int.Parse(NLD[0]);
int L = int.Parse(NLD[1]);
int D = int.Parse(NLD[2]);

// 침묵의 구간
int[] fadeRange = { L, L + 5 };

// 벨이 울리는 시간(초)
int secOfLastRing = D;

for (int i = 0; i < N; i++)
{
	// 침묵의 구간 시작점보다 벨이 울리는 시간(초)가 빠르다면
    // 구간 내에 진입할 때까지 벨이 울린다.
    while (fadeRange[0] > secOfLastRing)
        secOfLastRing += D;

    if (secOfLastRing < fadeRange[0] || secOfLastRing >= fadeRange[1])
    {
        fadeRange[0] = fadeRange[1] + L;
        fadeRange[1] = fadeRange[0] + 5;
    }
    else
        break;
}
728x90
728x90

'코딩테스트 > 백준' 카테고리의 다른 글

[1541] 잃어버린 괄호(C#)  (0) 2022.05.20
[1459] 걷기(C#)  (0) 2022.05.18
[2748] 피보나치 수 2(C#)  (0) 2022.04.07
[10989] 수 정렬하기3(C#)  (0) 2022.03.30
[18014] 나이순 정렬(C#)  (0) 2022.03.30