728x90
반응형
안녕하세요. delay100 입니다.
어제는.. TIL도 안적고... 공부도 .. 안하구 ... 그래서 어제 문제를 풀려고 합니다..!!
오늘 저녁에도 약속이 있어서.. 후딱 풀고 나갈 준비를 해야해요 (처음으로 정기 세션 참가를 못하네요 ..ㅠㅠ)
미들러 문제. 이진 변환 반복하기
https://school.programmers.co.kr/learn/courses/30/lessons/70129
문제에 주어진 입출력 예와 동일하게 직관적으로 코드를 작성했습니다.
주석으로 상세히 설명해두었습니다.
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
int[] x = new int[s.length()];
for(int i=0; i<s.length(); i++) {
x[i] = s.charAt(i) - '0';
}
boolean isTrue = false; // while문을 원하는 만큼 반복하기 위한 변수
while(!isTrue) { // 사실상 isTrue는 항상 false이므로, !isTrue대신 true를 적어주어도 됩니다.
if(x.length==1 && x[0]==1) break; // 1에 도달한 경우 반복문 종료
answer[0]++; // 변환 회차 증가
int c = 0; // 0의 개수를 담을 변수
int one = 0; // 1의 개수를 담을 변수
// 0의 개수를 셉니다.
for(int i=0; i<x.length; i++) {
if(x[i]==0) c++;
}
answer[1] += c; // 0의 개수 추가입력
one = x.length - c; // 1의 개수를 찾아줍니다.(전체 개수 - 0의 개수)
// one(1)의 개수 만큼을 값으로 생각하여 이진수로 변환하기
String ss = Integer.toBinaryString(one);
x = new int[ss.length()]; // 결과 문자열(이진수)을 다시 계산할 수 있도록 int형으로 변환시켜줍니다.
for(int i=0; i<ss.length(); i++) {
x[i] = ss.charAt(i) - '0';
}
}
return answer;
}
}
+ 비기너 문제
k번째수 (https://school.programmers.co.kr/learn/courses/30/lessons/42748)
+ 챌린저 문제
우박수열 정적분 (https://school.programmers.co.kr/learn/courses/30/lessons/134239)
728x90
반응형
'항해99 > 99club1기TIL' 카테고리의 다른 글
[99club/TIL] 3주차 - 토요일 TIL(Today I Learned) (0) | 2024.04.13 |
---|---|
[99club/TIL] 3주차 - 금요일 TIL(Today I Learned) (0) | 2024.04.12 |
[99club/TIL] 3주차 - 화요일 TIL(Today I Learned) (0) | 2024.04.09 |
[99club/TIL] 3주차 - 월요일 TIL(Today I Learned) (0) | 2024.04.08 |
[99club/TIL] 2주차 - 일요일 TIL(Today I Learned) (0) | 2024.04.07 |