[Python] map(): 리스트의 형식 변환(문자열->숫자 or 숫자->문자열) map() 함수 활용하기 num_list = [1, 2, 3, 4, 5] str_list = ['1', '2', '3', '4', '5'] num_to_str = list(map(str, num_list)) print(num_to_str) # >> ['1', '2', '3', '4', '5'] str_to_num = list(map(int, str_list)) print(str_to_num) # >> [1, 2, 3, 4, 5] Programming/Python 2021.08.03
[Algorithm] 다이나믹 프로그래밍 다이나믹 프로그래밍은 다음 조건을 만족할 때 사용할 수 있다. 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다 탑다운(Top-Down) 방식 : 재귀함수를 이용하여 다이나믹 프로그래밍 소스코드를 작성하는 방법, 큰 문제를 해결하기 위해 작은 문제를 호출 메모이제이션(Memoization) : 다이나믹 프로그래밍을 구현하는 방법 중 한 종류로, 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모리 결과를 그대로 가져오는 기법 보텀업(Bottom-Up) 방식 : 반복문을 이용하여 소스코드를 작성하는 방법, 작은 문제부터 차근차근 답을 도출 (탑다운 방식보다 보텀업 방식이 권장됨) ## 예시 (피보나치 수열 소스코드(재귀적)) -.. Programming/Algorithm 2021.07.22
[백준/Python] 해시 - 나는야 포켓몬 마스터 이다솜(1620) 나는야 포켓몬 마스터 이다솜 문제 설명 안녕? 내 이름은 이다솜. 나의 꿈은 포켓몬 마스터야. 일단 포켓몬 마스터가 되기 위해선 포켓몬을 한 마리 잡아야겠지? 근처 숲으로 가야겠어. (뚜벅 뚜벅) 얏! 꼬렛이다. 꼬렛? 귀여운데, 나의 첫 포켓몬으로 딱 어울린데? 내가 잡고 말겠어. 가라! 몬스터볼~ (펑!) 헐랭... 왜 안 잡히지?ㅜㅜ 몬스터 볼만 던지면 되는 게 아닌가...ㅜㅠ (터벅터벅) 어? 누구지? 오박사 : 나는 태초마을의 포켓몬 박사 오민식 박사라네. 다솜아, 포켓몬을 잡을 때는, 일단 상대 포켓몬의 체력을 적당히 바닥으로 만들어놓고 몬스터 볼을 던져야 한단다. 자, 내 포켓몬 이상해꽃으로 한번 잡아보렴. 포켓몬의 기술을 쓰는 것을 보고 포켓몬을 줄지 안줄지 결정을 하겠네. 자 한번 해보아.. Programming/Questions 2021.07.19
[프로그래머스/Python] 해시 - 전화번호 목록 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입.. Programming/Questions 2021.07.14
[Python] Counter: list 요소 개수 세어서 dictionary로 출력 리스트의 모든 요소의 개수를 세서 dictionary로 출력하기를 원한다면 Counter을 사용하면 된다. collections 모듈 내에 존재하므로 import collections를 해주어야한다. import collections list1 = [1, 2, 10, 1, 4, 10, 2, 1, 1, 10] print(collections.Counter(list1)) ''' >> Counter({1: 4, 10: 3, 2: 2, 4: 1})''' list2 = [1, 2, 10, 1, 4, 10, 2, 1, 1] print(collections.Counter(list2)) ''' >> Counter({1: 4, 2: 2, 10: 2, 4: 1})''' - 두 Counter 비교하기 print(collec.. Programming/Python 2021.07.11
[Python] 딕셔너리 dictionary 딕셔너리(dictionary): key-value 쌍으로 데이터를 저장하는 자료구조 딕셔너리 = {key : value} 딕셔너리 = {key1:value1, key2:value2, key3:value3, key4:value4} key를 이용해 value에 접근이 가능하다. (key 값은 중복이 될 수 없다.) 1. 딕셔너리 생성 # 딕셔너리 생성 d = { 'key1' : 1 } 2. 값 추가 # 값 추가 d['key2'] = 2 d['key3'] = 'value3' d[4] = 4 d[(5,6)] = 'value 5 and 6' #튜플 키 d['key7'] = (7, 8) #튜플 값 3. 전체 출력, key만 출력, value만 출력, key-value 쌍 출력, key로 value 출력 #전체 출력.. Programming/Python 2021.07.11
[Python] 반올림, 올림, 내림, 버림: round, ceil, floor, trunc num = 123.4567 '''반올림''' print(round(num)) # 123 print(round(num, 1)) # 123.5 print(round(num, 2)) # 123.46 print(round(num, -1)) # 120.0 print(round(num, -2)) # 100.0 import math #올림, 내림, 버림 '''올림''' print(math.ceil(num)) # 124 '''내림''' print(math.floor(num)) # 123 '''버림''' print(math.trunc(num)) # 123 Programming/Python 2021.07.07
[Python] 리스트 여러개 for문 (변수 여러개 넣기) : zip for문을 사용할 때 여러개의 리스트의 동일한 순서의 요소를 한 번에 이용할 일이 있다면 zip 사용하기 progresses = [93, 30, 55] speeds = [1, 30, 5] for p, s in zip(progresses, speeds): print(p,s) ''' 93 1 30 30 55 5 ''' Programming/Python 2021.07.07
[Python] 빠르게 입력받기 import sys #하나의 문자열 데이터 입력받기 input_data = sys.stdin.readline().rstrip() #입력받은 문자열 그대로 출력 print(input_data) ※ rstrip: 줄바꿈문자 제거하기위해 꼭 입력해야함! Programming/Python 2021.07.01
[Algorithm] 이진 탐색 - 순차 탐색 (O(N)) 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 #순차 탐색 소스코드 구현 def sequential_search(n, target, array): #각 원소를 하나씩 확인하며 for i in range(n): #현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: return i+1 #현재의 위치 반환(인덱스는 0부터 시작하므로 1 더하기) print("생성할 원소 개수를 입력한 다음 한 칸 띄고 찾을 문자열을 입력하세요.") input_data = input().split() n = int(input_data[0]) #원소의 개수 target = input_data[1] #찾고자 하는 문자열 p.. Programming/Algorithm 2021.07.01