Python/알고리즘공부

    10_삼성역량테스트3

    치킨게임 문제였다. 마지막 문제치고는 다른 문제들에 비해 엄청 간단한 문제였는데, 크게 어렵지 않았다. import itertools, sys n = 5 m = 3 city_map = [ [0, 0, 1, 0, 0], [0, 0, 2, 0, 1], [0, 1, 2, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 2], ] def get_min_city_chicken_distance(n, m, city_map): chicken_location_list=[] home_location_list=[] for i in range(n): for j in range(n): if city_map[i][j] == 1: home_location_list.append([i,j]) elif city_map..

    09_구슬게임

    이 문제는 꼭 해보고싶어서 시간이 좀 걸리긴 했는데 기어코 해결을 하고야 말았다. 중간에 정말 왜안되는지 모르겠는 이유가 발생했는데 알고보니 파이썬에서 리스트의 복사를 하면 기본적으로 얕은복사가 되는 것이었다. 이걸 발견하기까지 정말 많이 걸렸다... 하나하나 프린트를 찍어보면서 깨닫고 아! 라고 했다.. from collections import deque from copy import deepcopy map = [ ["#", "#", "#", "#", "#", "#", "#"], ["#", ".", ".", ".", "#", "B", "#"], ["#", ".", "#", "#", "#", "#", "#"], ["#", ".", ".", "R", ".", ".", "#"], ["#", "#", "#"..

    08_새로운게임_삼성역량테스트

    이 문제는 우선 처음에 문제자체를 이해하는것도 조금 어려웠다! 전에 올린문제중에 진공청소기 문제가 있었는데, 거기서 dy dc 를 사용했던 기억이 나서 그렇게 풀어보려고 한 다음에, 각 말들이 순서에맞게 방향대로 움직이고, 빨간벽,파란벽에 따라 기능을 달리하는거까지는 수행했는데, 이 말이 위로 올라탄 상태 즉, 윷놀이처럼 '업는다'라는 개념을 어떻게 도입해야할지 막막해서 그만뒀다. 확실히 아직 실전 코딩테스트를 풀기에는 실력이 부족하지 않은가 싶다. 한시간정도 고민했는데 못푸는 문제들을 우수수 보니 아직도 많이 부족하구나 싶으면서도 빨리 코딩실력을 키워서 다 풀어버리고싶다. 코테 준비는 확실히 다른 공부에 비해 즐겁다. 본론으로 돌아와서 '말을 업는다' 라는 개념을 도입하기 위해서 이 체스맵과 똑같은 맵..

    07_올바른 괄호 문자열 만들기_카카오 문제

    이번 문제는 문제와 구현방법이 나타나 있는 문제였다. 사실 아직까지도 왜 마지막에 첫번째와 마지막 문자를 제거한다음에 괄호를 제거하는지는 잘 이해가 되지 않는다 ㅠㅠ 조금더 이러한 문제들을 많이 풀어본 후에 꼭 다시풀어봐야할 문제인 것 같다. 다만, 이 순서를 따라서 코드를 구현하는거 자체는 어느정도 이해했다. 차분하게 1번부터 차근차근 구현한다면 설령 이해를 잘 못하더라도 충분히 풀 수 있는 문제였다. 사실 4-4단계빼고는 다 잘 이해한것 같다. from collections import deque balanced_parentheses_string = "()))((()" def is_correct_parenthesis(string): stack = [] for s in string: if s == '(..

    06_문자열 압축

    오늘 내가 공부했던 문제들 중에 유일하게 스스로 풀었던 문제이다! 어렵게 생각하지 않았다. # abcabcab # # [a b c a b c a b ] > 8 # [ab ca bc ab] > 8 # [abc abc ab] > 6 # [abca bcab] > 8 혼자서 주석들을 이렇게 써보고 문자열들을 이렇게 나눈다음에 각각을 리스트에 넣고, 인덱스를 사용하여 현재 인덱스가 지칭하는 항목과 그 다음항목이 같다면 ''으로 치환해주어 겹치는 부분을 사라지게 했다. 그 과정에서 숫자를 넣을 부분이 있어야 하기 때문에, overlap_lst란 개념을 도입해서 겹쳐져있는 문자들을 합쳐서 그 숫자를 세어주었다. 문제에서 문자열로 반환이 아닌, 가장짧은 길이만 반환하면 되기에 생각가능한 방법이었다. input = "a..

    05_catchme 문제! ( 상반기 line인턴채용문제)

    처음에 문제를 딱 보고 들었던 생각은 우선 코니의 위치를 생각한 다음에 브라운의 위치를 이전에 배운 BFS방식으로 쭉 나열해서 대입하면 되지 않을까??! 라는 생각이었다. 결론적으로 접근방식이 맞긴 했는데 구현하지는 못했다. 나는 시간에 따라서 위치를 어떻게 이중배열로 해야하나.. 고민하고 있었는게 고민하다 안풀려서 강사님의 해결답안을 보았는데 딕셔너리를 이용하여 푸셨다! from collections import deque c = 11 b = 2 queue = deque() def catch_me(cony_loc, brown_loc): # 구현해보세요! time = 0 queue = deque() queue.append((brown_loc,0)) visited = [{} for _ in range(20..