https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 개요 dfs를 닮은 단순 구현 문항 itertools의 combinations (조합) 을 알면 간단히 해결 가능 (번외) 3중 for문에 함수 참조까지 섞여 있는데 타임 오버가 안나온게 신기 해결 방법 sys 모듈 사용된지 꽤 되어서 그런지 사용법이 잘 기억이 안남 사용 이유는 아마 input 함수의 시간 초과율이 높기 때문 import sys // 두 숫자가 주어질 때 단..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 개요 - 순간순간 최선의 선택을 한다는 그리디 알고리즘 원리에 입각해 알파벳의 입장과 숫자의 입장으로 나눠 생각 - 가장 헷갈렸던 부분은 맨 앞자리에 위치한 알파벳이 같은 수준(등장하지 않았으며 자릿수가 같은)일 경우에 숫자 배분을 어떻게 해줘야하는지에 대한 고민 해결 방법 - 위에 서술한 두번째 고민은 큰 의미가 없었는데, 중요한 건 어떤 알파벳이 어떤 숫자를 가져가느냐가 아님 - 그것보다..
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 그리디 알고리즘? 각 상황에서 최선의 선택을 이어나가는 알고리즘 마시멜로 게임의 경우 (한시간 참으면 두개 - 당장 받기를 택하면 1개를 제공하는), 각 상황에서 최선의 선택은 1개를 받는 것이므로 절대 2개를 가질 수 없음 개요 그리디 알고리즘 분류의 문항 로직이나 정보가 크게 과하거나 복잡하진 않음 코드 import sys seqs = list(map(str, sys.stdin.readl..
개요 - 코드를 작성하면서도 이것보다 짧고 확실한 코드가 분명 있겠다 확신함... - 나머지를 구해 인덱스를 활용하는 방법을 생각 못하고 배열을 복제하여 따질 생각한 것부터 코드가 길어진 원인 - 정답을 맞힌 배열에서 sort로 맞힌 사람을 나열하려 했는데 이 또한 두 번째 원인 - 하나하나 보면 그동안 익힌 메서드들을 나름 자연스레 써먹은 모습인데 전체적으로 봤을 때는 그저 과해보인다. JS CODE (1) - 내 코드 function sos(answers) { const answer1 = { list: [1, 2, 3, 4, 5], length: 5 }; const answer2 = { list: [2, 1, 2, 3, 2, 4, 2, 5], length: 8 }; const answer3 = { l..
개요 - 난잡하게 풀었다. 가장 확실하지만 그만큼 무식하기도 한 풀이. - 객체의 정의는 주요 객체인 genre_obj로 정의했으며, 인덱스와 플레이타임 객체를 요소로 갖는 배열이 프로퍼티 값. genre_obj = {classic: [ {idx:--, play_time: --} ...], pop: [...]}; - sort 메서드를 이용해서 play_time 순으로 내림차순해준다. (이때 비교함수 작성시, return 값을 지정 안해주면 적용 안됨 주의하자) - sum_arr 배열이 장르 정보와 플레이시간 총합을 객체의 형태로 담고 있도록 한 후, 마찬가지로 sort 메서드를 통해 내림차순 해준다. - sum_arr 배열의 요소들을 key값으로 genre_obj의 요소들을 조건에 맞게 꺼내어 answe..
개요 - 문제는 굉장히 심플하며 풀이를 향한 길 또한 그리 다양하지 않아 보인다. - 해시 : 데이터를 다루는 기법 중 하나로, 검색과 저장을 아주 빠르게 진행함(대표적으로 Map 객체) + 데이터를 저장할 때 key-value형태로 데이터가 존재하고, key값이 배열의 인덱스로 저장되기 때문에 검색과 저장이 빠르게 일어남 JS CODE (1) function solution(participant, completion) { const map = new Map(); for(let i = 0; i < participant.length; i++) { let a = participant[i], b = completion[i]; map.set(a, (map.get(a) || 0) + 1); map.set(b, (..