Algorithm
-
문제 설명 문제풀이처음에 딕셔너리로 접근해야겠다고 생각했다.파이썬의 replace함수에 대해 몰랐을 때는, 생각보다 접근하기에 막막했다replace함수를 적용하면 쉬웠던 문제.. def solution(s): answer = 0 dic = { 0:'zero', 1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine' } for key,value in dic.items(): s = s.replace(value,str(key)) #인자 1을 인자2..
[프로그래머스-Lv.1] 숫자 문자열과 영단어문제 설명 문제풀이처음에 딕셔너리로 접근해야겠다고 생각했다.파이썬의 replace함수에 대해 몰랐을 때는, 생각보다 접근하기에 막막했다replace함수를 적용하면 쉬웠던 문제.. def solution(s): answer = 0 dic = { 0:'zero', 1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine' } for key,value in dic.items(): s = s.replace(value,str(key)) #인자 1을 인자2..
2024.06.09 -
문제 문제풀이개미들을 하나의 리스트에서 ‘튜플’로 관리했다.tuple[1]원소가 1인 경우 : left→right 으로 이동하는 개미오른쪽으로 이동하는 개미(ants[i][1])의 경우, 내 오른쪽 ants[i+1][1] 이 나랑 같이 ‘1’인지 확인한다.만약, 내 오른쪽 개미가 0에 해당된다면, 다른 방향의 개미이므로 (i,i+1) 를 change_set에 저장tuple[1]원소가 0인 경우 : right→left으로 이동하는 개미왼쪽으로 이동하는 개미(ants[i][1])의 경우, 내 왼쪽 ants[i-1][1] 이 나랑 같이 ‘0’인지 확인한다.만약, 내 오른쪽 개미가 1에 해당된다면, 다른 방향의 개미이므로 (i-1,i) 를 change리스트에 저장change_set배열이 아니라 set()으로 관..
[백준 3048] 개미문제 문제풀이개미들을 하나의 리스트에서 ‘튜플’로 관리했다.tuple[1]원소가 1인 경우 : left→right 으로 이동하는 개미오른쪽으로 이동하는 개미(ants[i][1])의 경우, 내 오른쪽 ants[i+1][1] 이 나랑 같이 ‘1’인지 확인한다.만약, 내 오른쪽 개미가 0에 해당된다면, 다른 방향의 개미이므로 (i,i+1) 를 change_set에 저장tuple[1]원소가 0인 경우 : right→left으로 이동하는 개미왼쪽으로 이동하는 개미(ants[i][1])의 경우, 내 왼쪽 ants[i-1][1] 이 나랑 같이 ‘0’인지 확인한다.만약, 내 오른쪽 개미가 1에 해당된다면, 다른 방향의 개미이므로 (i-1,i) 를 change리스트에 저장change_set배열이 아니라 set()으로 관..
2024.06.07 -
# 10진수 -> 2진수 변환 : 10진수를 몫이 0이 될때까지 계속 2를 나누고, 나머지를 역순으로 읽으면 된다. #재귀함수를 이용해서 풀어보자 # 재귀함수 만들 때 이름을 DFS로 하겠다 # 재귀를 할 때는 앞으로 -> if / else로 하겠다. def DFS (x): # 재귀함수 종료 조건: N이 0이면 종료 if x == 0: return #함수를 종료시키겠다는 뜻 else: print(x%2 , end=' ') #한칸 띄워서 출력 DFS(x//2) # ex) x = 11 # D(11) -> D(5) -> D(2) -> D(1) -> D(0) 만약, x=11이라고 했을 때, D(11) -> D(5) -> D(2) -> D(1) -> D(0) 순서로 1 1 0 1이 출력된다. 11이라는 10진수를..
재귀함수를 이용한 이진수 출력# 10진수 -> 2진수 변환 : 10진수를 몫이 0이 될때까지 계속 2를 나누고, 나머지를 역순으로 읽으면 된다. #재귀함수를 이용해서 풀어보자 # 재귀함수 만들 때 이름을 DFS로 하겠다 # 재귀를 할 때는 앞으로 -> if / else로 하겠다. def DFS (x): # 재귀함수 종료 조건: N이 0이면 종료 if x == 0: return #함수를 종료시키겠다는 뜻 else: print(x%2 , end=' ') #한칸 띄워서 출력 DFS(x//2) # ex) x = 11 # D(11) -> D(5) -> D(2) -> D(1) -> D(0) 만약, x=11이라고 했을 때, D(11) -> D(5) -> D(2) -> D(1) -> D(0) 순서로 1 1 0 1이 출력된다. 11이라는 10진수를..
2023.08.25 -
그래프의 각 정점을 방문하는 그래프 순회에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 이 있다. 깊이 우선 탐색(DFS) 주로 스택으로 구현하거나 재귀로 구현 백트래킹을 통해 뛰어난 효용을 보인다 너비 우선 탐색(BFS) 주로 큐로 구현 그래프의 최단 경로를 구하는 문제 등에 사용 그래프를 표현하는 방법은 크게 2가지이다. 인접 행렬 인접 리스트 인접 리스트 인접 리스트는 key: 출발 노드 , value: 도착 노드 로 표현할 수 있다. 도착 노드는 여러 개가 될 수 있으므로 리스트 형태이다. 파이썬의 딕셔너리 자료형으로 다음과 같이 나타낼 수 있다. graph = { 1:[2,3,4], 2:[5], 3:[5], 4:[], 5:[6,7], 6:[], 7:[3], } 위와 같은 딕셔너리를..
그래프 순회(BFS/DFS)그래프의 각 정점을 방문하는 그래프 순회에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 이 있다. 깊이 우선 탐색(DFS) 주로 스택으로 구현하거나 재귀로 구현 백트래킹을 통해 뛰어난 효용을 보인다 너비 우선 탐색(BFS) 주로 큐로 구현 그래프의 최단 경로를 구하는 문제 등에 사용 그래프를 표현하는 방법은 크게 2가지이다. 인접 행렬 인접 리스트 인접 리스트 인접 리스트는 key: 출발 노드 , value: 도착 노드 로 표현할 수 있다. 도착 노드는 여러 개가 될 수 있으므로 리스트 형태이다. 파이썬의 딕셔너리 자료형으로 다음과 같이 나타낼 수 있다. graph = { 1:[2,3,4], 2:[5], 3:[5], 4:[], 5:[6,7], 6:[], 7:[3], } 위와 같은 딕셔너리를..
2023.08.25 -
그리디(Greedy) 알고리즘현재 상황에서 가장 좋은 것을 선택하여 적용하는 알고리즘 (그 이후의 상황은 고려하지 않는다) 그리디(Greedy) 알고리즘 문제 풀이를 위해 요구되는 것# 창의력 : 문제를 해결하기 위한 최소한의 아이디어를 생각해낼 수 있는가? # 가장 좋은 것이 무엇인지 파악하는 능력 => 다른 알고리즘과 달리 특정한 사용법, 라이브러리 등을 알고있어야 하는 것이 아니라, 여러 다양한 문제를 풀어봄으로써 접근 능력을 길러야 하는 유형이다.
그리디(Greedy) 알고리즘그리디(Greedy) 알고리즘현재 상황에서 가장 좋은 것을 선택하여 적용하는 알고리즘 (그 이후의 상황은 고려하지 않는다) 그리디(Greedy) 알고리즘 문제 풀이를 위해 요구되는 것# 창의력 : 문제를 해결하기 위한 최소한의 아이디어를 생각해낼 수 있는가? # 가장 좋은 것이 무엇인지 파악하는 능력 => 다른 알고리즘과 달리 특정한 사용법, 라이브러리 등을 알고있어야 하는 것이 아니라, 여러 다양한 문제를 풀어봄으로써 접근 능력을 길러야 하는 유형이다.
2023.08.04 -
1. 문제 2. 알고리즘 이분 탐색 (이분탐색 안쓰면 시간초과 발생/ 시간복잡도 문제) 3. 코드 # 10815 숫자카드와 거의 동일한 문제 def binary_search (arr,key,start,end): while start key: end = mid -1 else: start = mid + 1 return 0 ; T = int(input()) #첫째 줄에 테스트케이스의 개수 T가 들어온다 for i in range(T): N = int(input()) first_lst = list(map(int,input().split())) M = int(input()) second_lst = list(map(int,input().split())) result = [0] * M first_lst.sort() ..
2776.암기왕1. 문제 2. 알고리즘 이분 탐색 (이분탐색 안쓰면 시간초과 발생/ 시간복잡도 문제) 3. 코드 # 10815 숫자카드와 거의 동일한 문제 def binary_search (arr,key,start,end): while start key: end = mid -1 else: start = mid + 1 return 0 ; T = int(input()) #첫째 줄에 테스트케이스의 개수 T가 들어온다 for i in range(T): N = int(input()) first_lst = list(map(int,input().split())) M = int(input()) second_lst = list(map(int,input().split())) result = [0] * M first_lst.sort() ..
2023.08.02 -
1. 문제 2. 알고리즘 + 풀이 초기 코드 -> # -*- coding: euc-kr -*- import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') N = int(input()) lst = [0] * N #이렇게 초기화를 해야지, 대입 연산자 사용 가능 cnt = 0 for i in range(N): lst[i] = int(input()) key = lst[0] #다솜이가 기준 for i in range(1,N): #i=0이 다솜이 -> i=1부터 탐색 if (key l..
[1417]국회의원 선거1. 문제 2. 알고리즘 + 풀이 초기 코드 -> # -*- coding: euc-kr -*- import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') N = int(input()) lst = [0] * N #이렇게 초기화를 해야지, 대입 연산자 사용 가능 cnt = 0 for i in range(N): lst[i] = int(input()) key = lst[0] #다솜이가 기준 for i in range(1,N): #i=0이 다솜이 -> i=1부터 탐색 if (key l..
2023.07.26 -
1. 문제 2. 알고리즘 및 풀이 초기 시도 -> 에러 발생 N,K = map(int,input().split()) origin_list = list(map(int,input().split(','))) new_list = [] for i in range(K): # k = 2 for j in range(1,len(origin_list)): #n-1번 진행 (index=1 즉, 두 번째 원소부터 시작하니까) new_list[j-1] = origin_list[j] - origin_list[j-1] origin_list = new_list[:] 에러 발생 이유 for문 내부에서 리스트 값 재할당 시 문제 new_list[j-1] = origin_list[j] - origin_list[j-1] 이렇게 값을 변경하..
[1551] 수열의 변화1. 문제 2. 알고리즘 및 풀이 초기 시도 -> 에러 발생 N,K = map(int,input().split()) origin_list = list(map(int,input().split(','))) new_list = [] for i in range(K): # k = 2 for j in range(1,len(origin_list)): #n-1번 진행 (index=1 즉, 두 번째 원소부터 시작하니까) new_list[j-1] = origin_list[j] - origin_list[j-1] origin_list = new_list[:] 에러 발생 이유 for문 내부에서 리스트 값 재할당 시 문제 new_list[j-1] = origin_list[j] - origin_list[j-1] 이렇게 값을 변경하..
2023.07.26