본문 바로가기

구현7

[Programmers 파이썬] 문자열 압축 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 카카오 2020 공개채용 문제이다. 특별히 사용한건 없고, 우선 나는 새로운 배열에 문자열을 부분부분 나눠서 저장해주고 시작했다. 처음에는 그냥 새로운 문자열을 만들어주기보단, 만들어질 문자열의 길이를 미리 예측하여 더해주려고 했으나, aaaaaaaaaa -> 10a result 3 a -> result 1 등의 예외 처리해줄 것이 너무 많아 이내 새로운 문자열을 그냥 만드는 것으로 방향을 틀었다. def solution(s): answer = len(s.. 2022. 6. 22.
[Programmers 파이썬] 오픈채팅방 Dict 활용 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 카카오 공개채용 2019년 문제이다. 문제를 읽으면 알겠지만, id와 닉네임의 동기화가 중요하다. 이때 모두 Enter 시 모두 리스트에 저장해놓고 탐색해도 되겠지만 보나마나 O(n)을 for문안에 넣으면 O(n^2)이 되어버려서 시간초과 날것임이 직감적으로 느껴졌다. 코딩테스트 문제를 풀때나, 프로그래밍 할 때나 마찬가지겠지만, 반복문 안에서 list를 탐색하는 등의 시간의 n시간 이상 걸리는 작업은 웬만하면 하지 않는게 좋다😎 그래서 난 Dict 자료구조를 .. 2022. 6. 22.
[BOJ 1068 파이썬] 파이썬 트리 BFS 풀이 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 이 문제를 처음 보자마자 든 생각은 BFS로 풀면 되지 않을까? 였다. 먼저, 지워질 노드를 고려하지 않고 모든 노드들을 edge로 연결해주어 그래프를 만들어주었다. 이후, BFS로 탐색 하되 삭제한 노드로는 탐색하지 않게끔 예외를 주고, 부모노드가 삭제되었을 때의 예외를 해주었다. 루트노드는 연결 edge가 하나 밖에 없으므로 탐색시 연결 edge가 하나라면 답에 더해주었다. 그래서 처음 완성한 코드가 from collections import deque.. 2022. 6. 21.