728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/70129
코드
using System;
public class Solution {
public int[] solution(string s) {
int totalCnt = 0;
int zeroCnt = 0;
while(s != "1")
{
int lenBefore = s.Length;
s = s.Replace("0", ""); // 0 제거
int lenAfter = s.Length;
zeroCnt += (lenBefore - lenAfter);
s = Convert.ToString(lenAfter, 2);
totalCnt++;
}
int[] answer = new int[] {totalCnt, zeroCnt};
return answer;
}
}
고민
1. 0을 제거한다.
2. 0을 제거하고 남은 2진수의 길이를 2진법으로 변경한다.
3. 최종적으로 1이 되면 변경된 횟수, 삭제된 0의 개수를 출력한다.
while문을 true로 걸고 안에서 if문으로 break를 했다.
어차피 while문에서 검증할 수 있는데 바보같은 생각이었다.
Replace라는 메서드를 몰라 for문으로 0번째가 '0'이면 Remove를 통해 삭제했다.
그래서 시간초과가 발생했고 문제가 풀리지 않았다.
Replace라는 메서드를 꼭 기억해야겠다.
'동식이 취업시키기 작전 > 코딩테스트' 카테고리의 다른 글
[백준] 2961번 도영이가 만든 맛있는 음식 (1) | 2024.06.18 |
---|---|
[백준] 1931번 회의실 배정(C#) (1) | 2024.04.11 |
[프로그래머스] 덧칠하기(C#) (0) | 2024.04.09 |
[백준] 1012번 유기농 배추(C#) (1) | 2024.03.18 |
[백준] 2667번 단지번호붙이기(C#) (1) | 2024.03.15 |