본문 바로가기
프로그래머스

이어 붙인 수(C#)

by LemongO 2024. 5. 22.

📌프로그래머스 181928

💡풀이

  • 순간적으로 string이 생각났지만 쓰지 않고도 해결할 방법이 떠올라 int만 사용한다.
  • 반복문을 돌며 검사를 할 때, num_list의 홀수와 짝수는 각각 다음과 같다.
    • num_list[i] % 2 == 1
    • num_list[i] % 2 == 0 
  • 홀수 짝수 int 변수를 각각 만들고 처음 더하면(홀수or짝수 == 0) num_list[i]를
  • 그 이후는 (홀수or짝수) * 10 + num_list[i]를 한다.
  • num_list의 원소가 1이상 이기에 가능하다.
public int 이어붙인수(int[] num_list)
{
    int even = 0;
    int odd = 0;

    for (int i = 0; i < num_list.Length; i++)
    {
        if (num_list[i] % 2 == 0)
            even = even > 0 ? even * 10 + num_list[i] : num_list[i];
        else
            odd = odd > 1 ? odd * 10 + num_list[i] : num_list[i];
    }

    return even + odd;
}

또는

public int 이어붙인수(int[] num_list)
{
    int even = 0;
    int odd = 0;

    foreach(int num in num_list)
    {
        if (num % 2 == 0)
            even = even > 0 ? even * 10 + num : num;
        else
            odd = odd > 0 ? odd * 10 + num : num;
    }

    return even + odd;
}

 

만약 string을 쓴다면?

 

public int 이어붙인수(int[] num_list)
{
    string even = "";
    string odd = "";

    foreach (int n in num_list)
    {
        if (n % 2 == 0)
            even += n.ToString();
        else
            odd += n.ToString();
    }

    return int.Parse(even) + int.Parse(odd);
}

느리다.