C# k의 개수 - 프로그래머스 [Lv.0] 코딩 테스트 입문

출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120887

 

 

나의 풀이

using System;

public class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        // Convert.ToChar(k)는 아스키 코드에 대한 변환이라서 여기서는 사용 X
        char targetChar = k.ToString()[0]; // char.Parse(k.ToString());
        
        for(int num = i; num < j + 1; num++)
        {
            foreach(char item in num.ToString())
            {
                if(item == targetChar)
                    answer++;
            }
        }
        
        return answer;
    }
}

 

 

다른 사람의 풀이 1

using System;
using System.Linq;

public class Solution {
    public int solution(int i, int j, int k) =>
        Enumerable.Range(i, j - i + 1)
        .Select(x => x.ToString().Where(y => y.Equals(k.ToString().First())).Count())
        .Sum();
}

- Enumerable.Range 상당히 유용해보이는데 자주 까먹는다. 사용법 숙지할 것.

 

다른 사람의 풀이 2

using System;

public class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for(; i <= j; i++)
        {
            foreach(char c in i.ToString())
            {
                if(c - 48 == k)
                    answer++;
            }
        }
        return answer;
    }
}

- ASCII 코드는 숫자 48 ~, 소문자 65~ 대문자 97~ 부터 시작한다.

- char는 ASCII 코드 인덱스 기준으로 int랑 연산이 가능하다.

(char-ASCII 연산 예시)

char x = '9'; // '9' = ASCII 57
int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9

 

 

댓글

Designed by JB FACTORY