코딩테스트_c#/프로그래머스
프로그래머스 ) 코딩테스트 연습 - 2개 이하로 다른 비트 Level.2_C#
노년인생
2024. 3. 22. 17:24
728x90
반응형
테스트 케이스 추가
numbers(long[]) | Return |
[1001, 337, 0, 1, 333, 673, 343, 221, 898, 997, 121, 1015, 665, 779, 891, 421, 222, 256, 512, 128, 100] | [1002, 338, 1, 2, 334, 674, 347, 222, 899, 998, 122, 1019, 666, 781, 893, 422, 223, 257, 513, 129, 101] |
2개 이하로 다른 비트 문제
내 코드
using System;
using System.Linq;
using System.Collections.Generic;
//+6
public class Solution {
public long[] solution(long[] numbers) {
long[] answer = new long[numbers.Length];
for (int i = 0; i < numbers.Length; i++)
{
string numStr = Convert.ToString(numbers[i], 2);
int startIndex = numStr.IndexOf("1");
int zeroPoint = numStr.LastIndexOf("0");
if (zeroPoint == -1)
{
string sub = numStr.Substring(startIndex+1);
numStr = "10" + sub;
}
else
{
char[] chArr = numStr.ToCharArray();
chArr[zeroPoint] = '1';
if(zeroPoint +1 < numStr.Length)
chArr[zeroPoint+1] = '0';
numStr = new string(chArr);
}
answer[i] = Convert.ToInt64(numStr, 2);
}
return answer;
}
}
728x90
반응형