코딩공부/프로그래머스

※[프로그래머스]Lv.2 마법의 엘리베이터C# (곱셈 나눗셈으로 나머지)

usingsystem 2023. 7. 25. 15:12
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/148653

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소스코드1(시간복잡도 오류)

using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
    public int solution(int storey)
    {
        int answer = 0;
        string str = storey.ToString();

        Dictionary<int, int> dic = new Dictionary<int, int>();

        for (int i = 0; i < str.Length; i++)
        {
            dic.Add(i + 1, Convert.ToInt32(str[i].ToString()));
        }

        for (int i = dic.Count(); i > 0; i--)
        {
            if (dic[i] > 5)
            {
                answer += 10 - dic[i];
                dic[i] = 0;
                dic[i - 1] += 1;
            }
            else if (dic[i] == 5)
            {
                answer += 10 - dic[i];
                dic[i] = 0;

                if (dic[i - 1] > 4)
                    dic[i - 1] += 1;
            }
            else
            {
                answer += dic[i];
                dic[i] = 0;
            }
        }
        return answer;
    }
}

소스코드2

using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
    public int solution(int storey)
    {
        int answer = 0;
        while (storey > 0)
        {
            int num = storey % 10;

            if (num > 5)
            {
                answer += 10 - num;
                storey = storey / 10;
                storey++;
            }
            else if (num == 5)
            {
                answer += 5;
                storey = storey / 10;

                if (storey % 10 > 4)
                    storey++;
            }
            else
            {
                answer += num;
                storey = storey / 10;
            }
        }

        return answer;
    }
}
728x90