문제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/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을 그렇지 않다면 현재 몇번 등장했는지의 값을 얻어..
문제https://www.acmicpc.net/problem/20920 풀이특정 길이 이상의 문자열을 입력받아 아래의 3가지의 조건으로 정렬하는것이 핵심이다. 1. 각 단어별 등장횟수를 기록해둔 숫자를 내림차순2. 등장 횟수가 같다면 단어의 길이로 내림차순3. 단어의 길이가 같다면 알파벳순 단어별 등장 횟수 기록은 defaultdict(int)를 이용하여 처음 등장하면 딕셔너리에 단어가 추가되며 값으로 1이 저장되고 두번째로 등장하면 값에 1씩 추가되는 방식으로 기록하였다. sorted(iterable 한 객체, key=lambda x: (-조건1, -조건2, 조건3))sorted와 key에 lambda식을 사용하면 첫번째 인자인 iterable 한 객체를 여러 조건으로 정렬가능하다.이 문제에서는 ..
문제https://www.acmicpc.net/problem/9935 풀이문자열에서 폭발 문자열이 없어질때까지 반복해서 찾아 지워나간다면 이론적으로 풀리기야 하겠지만 시간이 초과된다. 스택을 이용하면 전체 문자열에서 폭발 문자열을 찾는데 소요되는 시간, 문자열에서 폭발문자열을 반복하며 도려내어 새로운 문자열을 만드는 시간을 단축하여 빠르게 해결이 가능하다. 문자열을 앞에서부터 한글자씩 끝까지 순회하며 스택에 push하면서 스택의 윗부분과 폭발 문자열이 일치한다면 폭발 문자열의 길이만큼 pop해주기만 하면 한번의 순회로 쉽게 해결이 가능하다. 정답 코드msg = input()bomb = list(input())answerStack = []for letter in msg: answerStack...
문제https://www.acmicpc.net/problem/1213 풀이팰린드롬 문자열을 구성하려면 문자중 단 하나만 홀수개 사용할 수 있으며 정 가운데 입력된다,이 외의 다른 문자들은 짝수개 존재해야 팰린드롬 문자열로 구성이 가능하다. 문자별 등장 횟수를 딕셔너리로 저장하고, 홀수번 등장하는 문자를 기록하고 알파벳 순서대로 정렬하여 짝수번 등장하는 문자의 절반을 출력, 홀수번 등장하는 문자 출력, 짝수번 등장하는 문자의 절반을 뒤집어 출력하여 회문을 완성한다.이때 홀수번 등장하는 문자가 1개를 초과하면 팰린드롬이 불가하므로 한수에게 사과를 전하자. 정답 코드from collections import defaultdicthansooEngName = input()alphaDict = default..