프로그래머스(자바)
짝지어 제거하기→'문자비교' == , "문자열비교" equals, peek()★★+크레인 인형뽑기와 유사
나의 풀이 import java.util.*; class Solution { public static int solution(String s) { Stack stack = new Stack(); for (char c : s.toCharArray()) { stack.push(c); if (stack.size() >= 2) { if (stack.peek() == stack.get(stack.size() - 2)) { stack.pop(); stack.pop(); } } } if (stack.isEmpty()) { return 1; } else { return 0; } } } ▶ 스택에서 마지막 요소를 꺼내어 보고 싶을 때는 peek()를 사용하자 ▶ 스택이 비었는지 확인할 때 자바는 isEmpty()를 쓰고..
카펫→ 리스트 배열넣기, 리스트 출력★★
나의 풀이 import java.util.*; class Solution { public int[] solution(int brown, int yellow) { ArrayList list = new ArrayList(); int[] answer = {0, 0}; for (int i = 1; i
다음 큰 숫자→'문자열'에서 특정 요소 개수 세기(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; } } ▶ 주어..
피보나치 수→ 오버플로우 극복방법: %★★★
나의 풀이 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번째 피보나치 수..