본문 바로가기

Algorithm48

Lv2 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 문제 풀이 처음에.. 2021. 6. 17.
Lv1 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 풀이 방법 Lv1 문제답게 조금만 생각하면 풀 수 있는 문제였다. 일단 참여한 선수가 .. 2021. 6. 17.
TIL - 2021.05.27 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 대표적인 탐색 알고리즘으로 DFS,BFS를 꼽을 수 있다. 자료구조란 '데이터를 표현하고 관리하고 처리하기 위한 구조' 를 의미한다. DFS(Depth-First Search) , 깊이 우선 탐색이라고 하며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS는 먼저 들어간건 제일 늦게 나오는 FILO 구조를 지니고 있는 스택으로 구현한다. # DFS 메서드 정의 def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v] = True print(v,end=' ') # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in graph[v]: if not visited[i]: .. 2021. 5. 27.
TIL - 2021.05.26 구현(Implementation) 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭한다 구현 유형의 예시 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제 실수 연산을 다루고,특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제 적절한 라이브러리를 찾아서 사용하는 문제 완전 탐색 - 모든 경우의 수를 주저 없이 다 계산하는 방법 시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 문제 상하좌우 # 상하좌우 문제 n = int(input()) dx = [0,0,-1,1] dy = [-1,1,0,0] # L R U D con = ['L', 'R', 'U', 'D'] move = list(input().split()) x = 0 .. 2021. 5. 26.
TIL - 2021.05.24 입출력시 공백으로 구분된 데이터의 개수가 많으면, data = list(map(int,input(),split()) 으로 해주는 것이 좋다. 그게 아니고 데이터의 개수가 적다면 data = map(int,input(),split()) 으로 해줘도 된다. 만약에 PS 문제에서 시간초과 문제가 발생할 경우를 막기위해 속도가 최대한으로 빠른 방법도 존재한다. 외우자. import sys # 문자열 입력받기 data = sys.stdin.readline().rstrip() sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip() 함수를 꼭 호출해야 한다. readline() 으로 입력하면 ㅇ비력 후 엔터가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하려면 rstrip() 함수를 사용해야 한.. 2021. 5. 24.
TIL - 2021.05.23 인덱싱(Indexing) - 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것 슬라이싱(Slicing) - 리스트에서 연속적인 위치를 갖는 원소들을 가져올 때 사용하는 기능. a = [1,2,3,4,5,6,7] print(a[1:4]) # RESULT [2,3,4] 슬라이싱 구동 방법. 리스트 관련 기타 메서드 메서드 명 사용법 설명 시간 복잡도 append() 변수명.append() 리스트에 원소를 하나 삽입할때 사용 O(1) sort() 변수명.sort(), .sort(reverse= True) 1. 오름차순 정렬 2. 내림차순 정렬 O(NlogN) reverse() 변수명.reverse() 리스트의 원소 순서를 모두 뒤집어 놓음 O(N) insert() 변수명.insert(삽입할 위치 인덱스.. 2021. 5. 23.

IT_learning's Commit