코딩테스트 2020 KAKAO 신입 공채 를 풀다보니 2차원 배열의 90도 회전을 요구하는 문제가 있었다. 파이썬에서 2차원 리스트를 다룰 때 종종 사용되는 개념이므로 코드공식에 적어두고 필요할 때마다 꺼내봐야겠다. 그 전에 회전 알고리즘 원리를 먼저 파악해보자. 해당 2020 카카오 문제를 풀면서 2차원 배열 회전을 처음 맞닥뜨렸다면 절대 제시간 내에 풀지 못했을 것이다.. 보다 이해하기 쉽게 정리해봤다. 시계방향으로 90도 회전할 때, 회전 후의 행과 열 값을 알아야 한다. 2차원 배열이 회전할 때는 일정한 규칙이 있다. 90도 회전할 때의 위치를 모두 연결해보면 일정한 사이클이 있다. 사이클이 생긴다는 것은 요소의 합이 N일 가능성이 있다. (이때 N은 사각형의 크기) 그래서 나온 공식이 사진의 1..
이코테 책에서 풀다가 복습할 내용들만 정리해본다. 자세한 문제는 '이것이 코딩테스트다 with 파이썬 (나동빈)' 책에서 확인하기 구현 문제란 특별한 알고리즘 기법은 필요 없는 정확한 풀이가 핵심이 되는 문제를 말한다. 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 의미하며 나는 이런 부분에 많이 취약한 것 같다. - 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제 - 특정 소수점 자리까지 출력해야 하는 문제 - 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야 하는 문제 - 2차원 배열에서의 이동, 회전 등 까다로운 문제 특히 완전탐색과 시뮬레이션 유형은 모두 구현 유형으로 볼 수 있다. 완전탐색은 모든 경우의 수를 주저 없이 다 계산하는 해결 방법을 의미하고, 시..
기초 100제는 알고리즘 문풀에서 많이 사용되는 기본 코드 유형과 관련된 문제(특히 구현 implementation 관련)들로 이루어져 있다. 자신감을 기르기에 딱 좋은 사이트이다. 🌳 기억하면 좋을 구현 팁들 input().split(':')를 사용하면 입력받은 값을 콜론 ':' 기호를 기준으로 자른다. input().split()는 공백을 기준으로 입력값을 자른다. print(a, b, sep=':')를 사용하면 콜론 ':' 기호를 사이에 두고 a:b 형식으로 값을 출력한다. (sep은 seperator를 의미함) 키보드로 입력되는 것들은 기본적으로 문자열로 인식되고, 문자열끼리 더하기(+)하면 두 문자열이 합쳐 연결된(concatenate) 결과를 만들어 낸다. 10진수 int 형의 숫자를 %x, ..
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..