[プログラマ]バイナリ形式のコピーを繰り返す
1894 ワード
📌くりかえしにしんへんかん
0と1からなる任意の文字列xに対して、次のバイナリ形式のコピーを定義します.
1. x의 모든 0을 제거합니다.
2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
例えば、x=「011010」の場合、xをバイナリ変換すると、x=「011010」->「1111」->「100」となる.パラメータが0と1の文字列s.sが「1」になるまでsをバイナリ変換し続け、バイナリ変換の回数と変換中に削除されたすべての0の個数を配列に入れて返します.
📌せいげんじょうけん
📌I/O例
sresult"110010101001"[3,8]"01110"[3,3]"1111111"[4,1]
📌言語:JAVA
📌solution
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
int cnt = 0;
int zeroCnt = 0;
while(!s.equals("1")){
int oneCnt = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '1'){
oneCnt++;
}else{
zeroCnt++;
}
}
s = Integer.toBinaryString(oneCnt);
cnt++;
}
answer[0] = cnt;
answer[1] = zeroCnt;
return answer;
}
}
😎に答える
まず,バイナリ変換の回数
cnt
と削除された0個の数zeroCnt
を宣言する.文字列s
が1になるまで、while
文を繰り返します.while
ゲート内部で1の個数oneCnt
を発表する.文字列から0を削除した文字列の長さをバイナリ変換する必要がありますが、0を削除すると文字列に1しか残っていないため、문자열 내의 1의 갯수 = 0을 제거한 문자열의 길이
です.したがって、それぞれの状況に応じて、if
文でoneCnt
およびzeroCnt
を追加し、oneCnt
法でtoBinaryString
をバイナリ変換し、s
に文字列としてロードする.また、cnt
の値は、1回繰り返すごとに1だけ増加する.このようにしてs
が1になるまでwhile
ゲートを繰り返した後、answer
の0番目がcnt
、1番目がzeroCnt
となり、戻ればよい.Reference
この問題について([プログラマ]バイナリ形式のコピーを繰り返す), 我々は、より多くの情報をここで見つけました https://velog.io/@qaer07/프로그래머스-이진-변환-반복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol