본문 바로가기

프로그래밍 언어/Python3

(11)
Python) CSV 파일 한글 깨짐 현상 해결 csv 파일을 dbeaver로 임포트해서 테이블로 사용하려고 하니까 한글이 깨지는 문제가 발생했다. 이를 해결하기 위해 csv 파일을 sublime (텍스트 편집기 아무거나) 를 이용해서 UTF-8 encoding으로 저장한 후 다시 변환하면 된다는데 나는 그게 안되더라 그래서 그냥 한글이 깨지지 않은 상태의 xlsx 파일을 엑셀로 열어서 sublime에 그냥 복붙했다. 그랬더니 엑셀 포맷이 공백으로 유지됐다. 공백을 , 으로 바꿔서 csv 파일로 변환하기 위해 공백으로 포맷이 유지된 파일을 파이썬으로 읽고 공백을 ,으로 replace해서 저장 후 UTF-8로 저장했다. 자잘한 실수는 수작업으로 수정했지만 어쨌거나 csv 파일 한글 꺠짐없이 불러오는 거 성공 !! 아래는 공백을 ,으로 바꿔서 저장하려고 ..
[프로그래머스 코딩 테스트 연습] BFS/DFS 4. 여행경로 BFS/DFS 4. 여행경로 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 ICN 공항에서 출발합니다. 나는 stack을 이용해서 푸는 코드를 참고 했다. 그래서 항상 stack은 stack = ["ICN"] 으로 초기화 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가..
이진탐색트리 Binary Search Tree 탐색, 삽입, 삭제, 순회 search, insert, delete, traverse 구현하기 이진탐색트리 Binary Search Tree 이진탐색트리의 개념 각 노드의 왼쪽 서브트리에는 현재 노드보다 작은 값을 가진 노드만 있다. 각 노드의 오른쪽 서브트리에는 현재 노드보다 큰 값을 가진 노드만 있다. 중복 노드가 없다. inorder traverse를 한다 (왼쪽 - 루트 - 오른쪽) → 오름차순 정렬 가능 class Node: def __init__(self,value): self.value = value self.left = None self.right = None class BinarySearchTree: def __init__(self): self.root = None def setRoot(self,value): self.root = Node(value) 탐색 Search class ..
[프로그래머스 코딩테스트 연습] BFS/DFS 3. 단어변환 BFS/DFS 3. 단어변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> cog와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지..
[프로그래머스 코딩테스트 연습] 스택/큐 2. 기능개발 스택/큐 Stack/Queue 2. 기능 개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의..
[프로그래머스 코딩테스트 연습] 정렬 3. H-index 정렬 Sort 3. H-index 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. ..
[프로그래머스 코딩테스트 연습] 완전 탐색 1. 모의고사 완전탐색 Exhaustive Search 1. 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배..
[프로그래머스 코딩 테스트 연습] 정렬 1. K번째수 정렬 1. K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 1..