문제https://www.acmicpc.net/problem/1515 풀이234015가 입력으로 주어졌을 때 아래처럼1 2 3 4 5 6 7 8 9 10 11 12 13 14 15밑줄 그어진 수가 입력으로 주어진 남은 수,그렇지 않은게 다솜이가 지워린 수인것을 알 수 있고 마지막 값인 15가 정답이다. 최소인 마지막 값을 찾으려면1부터 1씩 증가시키면서 입력으로 주어진 수( 234015 )의 앞부터 지워나가면 된다. 순차적으로 생각하면 다음과 같다.1 -> 2340152 -> 234015, 2 삭제3 -> 34015, 3 삭제4 -> 4015, 4 삭제5 -> 0156 -> 0157 -> 0158 -> 0159 -> 01510 -> 015, 0 삭제11 -> 15, 1 삭제12 -> 513 ..
문제https://www.acmicpc.net/problem/20920 풀이특정 길이 M 이상의 문자열을 입력받아 아래의 3가지의 조건으로 정렬하는것이 핵심이다. 1. 각 단어별 등장횟수를 기록해둔 숫자를 내림차순2. 등장 횟수가 같다면 단어의 길이로 내림차순3. 단어의 길이가 같다면 알파벳순 단어별 등장 횟수 기록은 아래와 같은 가변 map을 사용한다.val words = mutableMapOf() 이 map에 문자열과 그 등장 횟수를 저장하기 위해 아래와 같이 getOrDefault를 이용했다.words에 word라는 값이 존재하면 그 값을, 아니라면 0을 반환하게 된다.words.getOrDefault(word, 0) 따라서 처음 등장한다면 0을 그렇지 않다면 현재 몇번 등장했는지의 값을 얻어..
[4주차] 편의점 🚀 할인 혜택과 재고를 고려한 최종 결제 금액을 계산하고 안내하는 편의점 결제 시스템 구현 ✒️ 기능 요구 사항사용자가 입력한 상품의 가격과 수량을 기반으로 최종 결제 금액을 계산한다.총구매액은 상품별 가격과 수량을 곱하여 계산하며, 프로모션 및 멤버십 할인 정책을 반영하여 최종 결제 금액을 산출한다.구매 내역과 산출한 금액 정보를 영수증으로 출력한다.영수증 출력 후 추가 구매를 진행할지 또는 종료할지를 선택할 수 있다.사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.Exception이 아닌 IllegalArgumentException, IllegalStat..
[3주차] 로또 🚀 보유 금액만큼 로또를 자동 구매하고 당첨 번호를 입력받은 뒤 당첨 통계와 수익률을 출력로또 번호의 숫자 범위는 1~45까지이다.1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다.당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다.당첨은 1등부터 5등까지 있다. 당첨 기준과 금액은 아래와 같다.1등: 6개 번호 일치 / 2,000,000,000원2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원3등: 5개 번호 일치 / 1,500,000원4등: 4개 번호 일치 / 50,000원5등: 3개 번호 일치 / 5,000원로또 구입 금액을 입력하면 구입 금액에 해당하는 만큼 로또를 발행해야 한다.로또 1장의 가격은 1,000원이다.당첨 번호와 보너스..
[2주차] 자동차 경주🚀 자동차 이름 목록과 경주 횟수를 입력받아 랜덤으로 이동하여 승자를 출력한다.주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다.사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우이다.자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다.사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시..
문제https://www.acmicpc.net/problem/28702 풀이3개의 입력값 다음의 올 숫자( targetNumber )에 대한 FizzBuzz값을 찾는 문제이다.특정 숫자의 FizzBuzz값은 아래와 같이 3과 5의 나머지 연산을 통해 쉽게 구할 수 있다.fun getFizzBuzz(i: Int): String { if (i % 3 == 0 && i % 5 == 0) { return "FizzBuzz" } if (i % 3 == 0) { return "Fizz" } if (i % 5 == 0) { return "Buzz" } return i.toString()} 3개의 연속된 입력값중에 정수 i가 하나라도 존재하면..