분류 전체보기
다음 큰 숫자→'문자열'에서 특정 요소 개수 세기(replace)★★
나의 풀이 class Solution { public int solution(int n) { int answer = 0; String original = Integer.toBinaryString(n); int original_one_cnt=original.length() - original.replace("1", "").length(); while (true){ n=n+1; String compare=Integer.toBinaryString(n); int compare_one_cnt= compare.length() - compare.replace("1", "").length(); if(original_one_cnt == compare_one_cnt){ break; } } return n; } } ▶ 주어..
다음 큰 숫자★→count()함수, int('숫자문자열', n)→n진법의 '숫자문자열'을 10진수로
나의 풀이 def solution(n): binary=bin(n)[2:] while(True): n=n+1 compare=bin(n)[2:] if binary.count('1') == compare.count('1'): answer=int(compare, 2) break return answer 다른 사람의 풀이 def nextBigNumber(n): num1 = bin(n).count('1') while True: n = n + 1 if num1 == bin(n).count('1'): break return n ▶ 사람 생각은 다 비슷비슷하다. ▶ 1의 갯수를 count하기 위해서 파이썬의 count() 함수를 잘 활용하자
피보나치 수→ 오버플로우 극복방법: %★★★
나의 풀이 class Solution { public int solution(int n) { int answer = 0; int[] fibo = new int[n + 1]; fibo[0]=0; fibo[1]=1; System.out.println("fibo.length = " + fibo.length); for (int i = 2; i < fibo.length; i++) { int sum=fibo[i-1]+fibo[i-2]; fibo[i]=sum % 1234567; } return fibo[fibo.length-1] % 1234567; } } 🚨이런 문제가 있어요 n이 매우 큰 경우 n번째 피보나치 수는 언어가 표현할 수 있는 자료형의 범위를 넘어가, 오버플로우가 납니다. 예를 들어 47번째 피보나치 수..
이진 변환 반복하기 → 특정 요소 개수 replace() 이용★★★ + 10진수→2진수★
나의 풀이 class Solution { public static int[] solution(String s) { int a = 0; int b = 0; while (!s.equals("1")) { a += 1; int num = s.length() - s.replace("1", "").length(); b += s.length() - num; s = Integer.toBinaryString(num); } return new int[] {a, b}; } } ▶ a는 cycle 순환 횟수를 의미한다. ▶ num은 1의 개수를 의미한다. ▶ b는 제거한 '0'의 갯수를 의미한다. ▶ 전체 문자열 개수 - 1의 개수를 빼면 제거한 '0'의 개수를 알수 있다. ▶ Integer.toBinaryString(dec..