본문 바로가기

알고리즘24

[Programmers 파이썬] 기능개발 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 이 문제는 파이썬의 list 자료구조에 대해 확실히 이해하고 있어야 풀 수 있던 문제같다. 처음에는 pop(0)로 그냥 풀까 하다가 반복문 내부에 O(n) 시간이 걸리는 작업을 해주면 O(n^2)의 시간이 걸리는 것을 알고 있었기에 다음과 같이 풀수 있었다. def solution(progresses, speeds): answer = [] total = 0 progresses.reverse() speeds.reverse() while True: temp .. 2022. 6. 22.
[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 16234 파이썬] 파이썬 인구이동 BFS문제풀이 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 전형적인 BFS문제이다. BFS 탐색 시 처리해주어야할 예외는 국경이 열려있는지를 먼저 처리하고, 열려있을 시에 연합으로 리스트를 만들어주기만 하면 된다. 이 문제에서 주의해야할 점은 BFS 한번으로만 끝낼 생각을 하면 안된다는 것이다. 대부분의 dp,DFS 등의 알고리즘들이 단 한번 탐색하고 마는데, BFS는 이 문제와 비슷하게 여러번 탐색해야하는 경우가 많다. 즉, 땅에 대해서 BFS를 진행하는데, BFS를 한번만 하고 끝 나는것이 아니라, 국경.. 2022. 6. 21.