Python

Problem Solving/프로그래머스

[프로그래머스] 자물쇠와 열쇠(python) - 2020 카카오 신입 공채

문제 바로가기(프로그래머스) 아이디어 : 구현(완전탐색), 2차원 리스트 회전 배열을 회전, 이동시켜야 한다는 부분에서 턱 막힌 문제였다. 회전 관련 부분은 따로 다뤘었고, 이동 문제는 배열을 직접 이동시킬 게 아니라, 기본 Lock 배열판을 크게 만들면 되는 거였다. 문제에서 제시한 자물쇠와 열쇠의 크기는 최대 20 x 20 이므로 완전 탐색을 이용해서 열쇠를 이동이나 회전시켜서 자물쇠에 끼워보는 작업을 전부 시도해봐도 무리가 없다. (400 * 400 = 16만, 일반적인 채점 환경에서는 1초에 2000만 ~ 1억 정도의 연산 처리 가능) 즉, 완전 탐색 아이디어를 사용하면 된다. 그리고 완전탐색을 수월하게 하고자 자물쇠 리스트의 크기를 3배 이상으로 변경하면 계산이 수월해진다. 그리고 그 중앙에 실..

Problem Solving/Algorithm, DS

[Python] 2차원 배열 90도 회전 알고리즘

코딩테스트 2020 KAKAO 신입 공채 를 풀다보니 2차원 배열의 90도 회전을 요구하는 문제가 있었다. 파이썬에서 2차원 리스트를 다룰 때 종종 사용되는 개념이므로 코드공식에 적어두고 필요할 때마다 꺼내봐야겠다. 그 전에 회전 알고리즘 원리를 먼저 파악해보자. 해당 2020 카카오 문제를 풀면서 2차원 배열 회전을 처음 맞닥뜨렸다면 절대 제시간 내에 풀지 못했을 것이다.. 보다 이해하기 쉽게 정리해봤다. 시계방향으로 90도 회전할 때, 회전 후의 행과 열 값을 알아야 한다. 2차원 배열이 회전할 때는 일정한 규칙이 있다. 90도 회전할 때의 위치를 모두 연결해보면 일정한 사이클이 있다. 사이클이 생긴다는 것은 요소의 합이 N일 가능성이 있다. (이때 N은 사각형의 크기) 그래서 나온 공식이 사진의 1..

Problem Solving/Algorithm, DS

[Python] 코딩테스트 '구현' 문제에 접근하는 방법

이코테 책에서 풀다가 복습할 내용들만 정리해본다. 자세한 문제는 '이것이 코딩테스트다 with 파이썬 (나동빈)' 책에서 확인하기 구현 문제란 특별한 알고리즘 기법은 필요 없는 정확한 풀이가 핵심이 되는 문제를 말한다. 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 의미하며 나는 이런 부분에 많이 취약한 것 같다. - 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제 - 특정 소수점 자리까지 출력해야 하는 문제 - 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야 하는 문제 - 2차원 배열에서의 이동, 회전 등 까다로운 문제 특히 완전탐색과 시뮬레이션 유형은 모두 구현 유형으로 볼 수 있다. 완전탐색은 모든 경우의 수를 주저 없이 다 계산하는 해결 방법을 의미하고, 시..

Today I Learned

[TIL] 210507 - 파이썬 for ~ else문, gcd 알고리즘

1. python for ~ else 문 프로그래머스에서 지난 Summer/Winter Coding 문제를 풀다가 다른 분 풀이를 보고 알게 된 파이썬 문법이다. 보통은 if ~ else 쌍으로 사용되지만, for ~ else 쌍으로도 사용될 수 있다는 것. 아래의 코드를 보면 이해가 쉬울 수 있다. for문에서 break가 동작하지 않았을 경우, for문이 끝난 후 따로 if문을 작성하여 처리하는 번거로움이 있었는데 else문을 사용하면 간단하게 해결할 수 있다. for ~ else문은 for문에서 break가 발생하지 않았을 경우의 동작을 else문에서 적어주는 것이다. for s in skills: if s in skill: if s != skill_list.pop(0): break else: an..

blackon29
'Python' 태그의 글 목록