문제
풀이
using System;
public class Solution {
public int[] solution(string s) {
int[] answer = new int[2];
int x_length = 0; //0을 제외한 2진수의 길이
int binaryCount = 0; //2진수 변환을 한 횟수
int zeroCount = 0; //0을 제거한 갯수
//s가 1이 될때까지 무한 반복
while (s != "1")
{
binaryCount++;
for (int i = 0; i < s.Length; i++)
{
//0의 갯수 만큼 zeroCount 증가
if (s[i] == '0')
{
zeroCount++;
}
}
s = s.Replace("0", ""); //0 전부 제거
x_length = s.Length; // 0을 제거한 길이만큼 x할당
s = Convert.ToString(x_length, 2); //x의 길이를 2진수로 변환
}
answer[0] = binaryCount; //2진수 변환 횟수
answer[1] = zeroCount; //제거한 0의 갯수
return answer;
}
}
이번 문제는 구현은 어렵지 않았지만, 문제를 이해하는게 관건이였던 것 같습니다.
문제를 요약하면 다음과 같습니다.
1. 문자열에서 0을 전부 제외한다.
2. 0을 제외한 문자열의 길이를 2진수로 변환한다.
3. 다시 1번 과정부터 문자열 1이 남을때까지 반복한다.
4. 2진수로 변환한 횟수, 제거한 0의 갯수를 배열에 저장한다.
저의 풀이과정은 다음과 같습니다.
1. while문으로 문자열 1이 남을때까지 반복한다. 이때, 반복한 횟수는 2진수로 변환한 횟수가 된다.
2. 문자열의 0을 제거하기 전에 0의 갯수를 저장하고, String.Replace를 이용해 0을 제거한다.
3. Conver.Tostring() 함수를 이용해 0을 제거한 문자열의 길이를 2진수로 변환한다.
4. while문이 종료되면 저장해놓은 2진수 변환 횟수와, 제거한 0의 갯수를 배열에 넣어서 반환한다.
'알고리즘' 카테고리의 다른 글
프로그래머스 [C#] 귤 고르기 (0) | 2024.11.01 |
---|---|
프로그래머스 [C#] 다음 큰 숫자 (0) | 2024.10.25 |
JadenCase 문자열 만들기 (0) | 2024.10.24 |
C# 최솟값 만들기 (0) | 2024.10.24 |
프로그래머스 C# 가장 가까운 글자 (0) | 2024.07.26 |