태그문제 축소 유형특징대표적인 문제 축소 유형 이라고 할 수 있다.문제에서 내놓은 조건에 따르면 실제 시뮬레이션을 구현해야 한다고 오해할 수 있지만, 실제는 그렇지 않다.문제조건현재 책이 현재 박스에 들어가지 않으면, 3번으로 간다. 아니면 2번으로 간다.현재 책을 현재 박스에 넣는다. 다음 책을 손에 집고 1번으로 간다.현재 박스를 다른 쪽으로 치운 다음에, 테이프로 못 열게 봉인한다. 다음 박스를 앞으로 가져오고 1번으로 간다.입력으로 주어진 박스와 책의 순서를 변경하면 안된다.위의 조건을 해석해보자면 박스에 책을 넣는 작업은 책의 순서대로 작업해야 하며 현재 책이 박스에 들어가지 않으면 해당 박스는 봉인되기 때문에 큰 낭비가 발생할 우려가 있다.그러나 아래의 제한조건을 보자…제한조건문제에 주어진 방..
전체 글
스프링부트, 아키텍쳐, 알고리즘문제 태그필요한 조건만 구현상식 배제하기BigInteger특징K가 인수분해되지 않는 케이스에 대한 언급이 없다.실무 상황 이라면 당연히 확인해야하는 상황이지만, 이 문제에 대한 해답을 내놓기만 하면 되는 상황에서는 이 경우 K가 1보다 큰 수로 인수분해되지 않는 케이스가 없다고 생각해야한다.사고 과정은 아래 Mermaid 다이어그램 참고위의 Mermaid 다이어그램에 대한 코드graph TD K --> 소인수분해{소인수분해} 소인수분해 --> K가소수 --> 고려하지않음 소인수분해 --> L미만의소수 --> 나쁜암호 소인수분해 --> 나머지 --> 좋은암호 static void solve() throws Exception { BigInteger K = new BigInteger(scan.next());..
특징알고리즘 문제를 푸는 도구 중 하나인 Rolling up or down after divison을 확인할 수 있는 문제이다.풀이방법은 크게 두가지인데, 둘 다 익숙해지면 좋을 듯간단하게 작성하면 소수 나눗셈으로 변경한 뒤 ceil 함수를 사용하는 방법이 있고,정통적?인 방법으로는 몫과 나머지가 0보다 큰지 확인하는 방법이 있다.static void solve() throws Exception { int num = scan.nextInt(); // Math.ceil((double)num / 5) 과 같다. System.out.println(num / 5 + ((num % 5 > 0) ? 1 : 0));}
특징다운 캐스팅중 숫자 잘림 현상에 대해서 문제로 설명하는 재미있는 문제이다.다운 캐스팅은 더 큰 범위나 정밀도를 가진 데이터 타입(ex : long)에서, 상대적으로 범위나 정밀도가 작은 데이터 타입(ex: short, int) 으로 변환하는 작업을 말하는데,이 과정에서 숫자의 일부 정보가 "잘려" 나가는 숫자 잘림 현상이 발생할 수 있다.문제 조건에 나열된 표를 활용하여 실제 값의 범위로 비교하는 방법도 있겠지만, 문제의 의도는 아래와 같은 풀이라고 생각함static void solve() throws Exception { long longNum = scan.nextLong(); int intNum = (int) longNum; short shortNum = (short) longNu..
특징c++의 vector, Java의 List 등의 가변 배열에 대한 내용을 문제로써 설명하는 것이 인상깊음static void solve() throws Exception { int size = scan.nextInt(); int cur = 0; int add = scan.nextInt(); int delete = scan.nextInt(); for (int i = 0; i