본문 바로가기
728x90

알고리즘141

[PG/Python] 문자열 압축 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 📌 문제 접근 방법 처음엔 문자열 길이의 약수들로만 단위를 줬었는데, 테스트 케이스가 틀렸길래 꼭 나누어 떨어지지 않더라도 남은 문자열은 더해주면 된다고 문제에 적혀있어서 이 부분을 수정했다. 첫 번째 반복문에서 i는 1부터 len(s)-1까지를 순회한다. i가 문자열을 나누는 단위가 된다. 두 번째 반복문에서 j는 i부터 len(s)-1까지 i.. 2021. 11. 3.
[BOJ/Python] 5052. 전화번호 목록 📌 문제 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 📌 문제 접근 방법 처음에는 입력 받은 번호를 정렬시키고 하나씩 비교하면서 다른 숫자를 찾았다. 될 줄 알았는데 n이 10000까지 입력가능하니까 최악의 경우엔 1초를 넘긴다. 그래서 코드를 갈아엎었다! 인덱스를 초기에 0으로 설정해놓고 모든 문자열을 순회하면서 해당 인덱스의 값을 key로, 해당 문자열을 value로 해서 temp에 넣는다. temp의 value중.. 2021. 10. 30.
[BOJ/Python] 14719. 빗물 📌 문제 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 📌 문제 접근 방법 우선 블록들 중에서 가장 높이가 높은 블록을 찾는다. 그 블록을 기준으로 왼쪽과 오른쪽으로 나눠서 탐색한다. 이하 가장 높이가 높은 블록을 기준 블록, 0번 부터 기준 블록의 왼쪽인덱스까지를 왼쪽 그룹, 기준 블록의 오른쪽인덱스부터 마지막 인덱스까지를 오른쪽 그룹이라 칭하겠다. 기준 블록의 왼쪽 인덱스부터 시작하여 0번 인덱스까지 왼쪽 그룹에서 가장 .. 2021. 10. 29.
[BOJ/Python] 2688. 줄어들지 않아 📌 문제 https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 첫째 줄에 테스트 케이스의 개수 T(1 2021. 10. 28.
728x90