Machineboy空

Excercism - Raindrop 본문

Computer/Coding Test

Excercism - Raindrop

안녕도라 2025. 2. 27. 12:02

문제요약

3,5,7의 배수인지 살피고 조건에 맞는 문자를 출력하라!

 


난이도

Easy


풀이 포인트

  • 나는 Flag로 중복을 방지했다
  • 모범 풀이는 애초에 정해진 길이의 StringBuilder를 사용했다.

REVIEW

 

이런 난이도가 쉬운 문제는 아이디어에 따라 꽤 코드가 달라진다.

나는 Flag로 해당 조건이 이미 만족되었는지를 체크했다. 45줄은 된다.

그런데 모범 풀이는 더욱 가독성 좋게 15줄로 해결했다..

그래서 기록해둔다!


CODE

using System.Globalization;
using System.Text;

public static class Raindrops
{
    public static string Convert(int number)
    {
        var drops = new StringBuilder(15);

        if (number % 3 == 0) drops.Append("Pling");
        if (number % 5 == 0) drops.Append("Plang");
        if (number % 7 == 0) drops.Append("Plong");

        return drops.Length > 0 ? drops.ToString() : number.ToString(CultureInfo.InvariantCulture);
    }
}
public static class Raindrops
{
    public static string Convert(int number)
    {
        string answer = "";
        bool isThreeContained = false, isFiveContained = false, isSevenContained = false;

        if(number <= 1) return number.ToString();
        
        while(number != 1){
        if(number%3 == 0)
        {
            number/=3;
            
            if(!isThreeContained){
                answer += "Pling";
            }
            
            isThreeContained = true;
            
        }else if(number%5 == 0)
        {
            number /= 5;
            if(!isFiveContained)
            {
                answer += "Plang";
            }
            isFiveContained = true;
        }else if(number%7 == 0)
        {
            number /=7;
            if(!isSevenContained)
            {
                answer += "Plong";
            }
            isSevenContained = true;
            
        }else
        {
            if(answer == "") return number.ToString();
            break;
        }
        }

        return answer;
        
    }
}