*개선 코드 + Linq 설명 필요
정리
1. int 비교 : int 배열로 직접 변환하는 내장 메소드 없음
-> int -> string -> CharArray로 풀어야 함
+) int 배열로 만드는 방법 : 나머지 연산
int order = 123;
List<int> digits = new List<int>();
while (order > 0)
{
digits.Add(order % 10);
order /= 10;
}
digits.Reverse(); // [1, 2, 3]
2. 숫자 한 자리씩 끊는 방법
int order = 369;
// 방법 1: string 변환 (가장 쉬움)
char[] chars = order.ToString().ToCharArray(); // ['3', '6', '9']
// 방법 2: 나머지 연산 (수학적)
while (order > 0)
{
int digit = order % 10; // 마지막 자릿수
order /= 10; // 나머지 제거
}
// 방법 3: LINQ
var digits = order.ToString().Select(ch => int.Parse(ch.ToString()));
각 문자로 끊는 방법
string text = "123";
char[] chars = text.ToCharArray(); // ['1', '2', '3']
var chars2 = text.Select(ch => ch).ToArray(); // LINQ
개선 코드
Linq
using System;
using System.Linq;
public class Solution {
public int solution(int order) {
return order.ToString().Count(ch => ch == '3' || ch == '6' || ch == '9');
}
}
설명 :
일반 코드
- (char)(3 + '0') : 불필요한 변환 !
저번 문제는 해당 변환이 필요했고, 이번엔 필요 없는 이유 ?????

-> int에서 char 변환 : (char)(int + '0')
int -> string -> char 변환 : int.ToString().ToCharArray()

9/6 다시 푼 것
using System;
// 입력 : 말해야하는 숫자 order
// 출력 : 쳐야할 박수 횟수
// 3, 6, 9 : 1개씩 증가
public class Solution {
public int solution(int order) {
int answer = 0;
// 배열로 만들기 <- 무슨무슨 방법 가능? (int arr, char arr ?)
// 1 char arr : 가능 (확실)
// 2. int arr : 불확실하긴한데, 가능할듯??
// 모르는 것 : 숫자 한 자리씩 끊기 !!
// 공백 없음 -> split("") 불가능
// 가능해보이는 방법 : string[] = string.Split(new char[0]) : 빈 배열 전달 -> 각 문자로 분리
// substring
// 내 방법 : char Arr만들기
// int -> char : order - '0';
// 에러 : 이거 안 됨 (int -> charArr)
// 아마도, int -> string -> charArr
//char[] charArr = order.ToCharArray();
char[] charArr = order.ToString().ToCharArray();
// 개수 찾아서 계산 or 반복문
for (int i = 0; i < charArr.Length; i++)
{
// int -> char 변환해서 비교 : (char)(int + '0')
if (charArr[i] == (char)(3 + '0') ||
charArr[i] == (char)(6 + '0') ||
charArr[i] == (char)(9 + '0'))
{
answer++;
}
}
return answer;
}
}
원래 풀던 것
using System;
// 입력 : 말해야하는 숫자 order
// 출력 : 쳐야할 박수횟수
public class Solution {
public int solution(int order) {
int answer = 0;
// 반복문
if (int i = 1; i <= order; i++)
{
if (i == 3 || i == 6 || i == 9)
{
answer++;
}
}
return answer;
}
}