파이썬 18

비선형 구조의 탐색(그래프 구현, DFS, BFS)

선형 탐색 = i번째 상태를 탐색한 후 다음 i+1번째 탐색 상태가 한가지일 때 선형 탐색법 = 순차 탐색, 이분 탐색 비선형 탐색 = i번째 상태 탐색 후 다음 i+1번째 상태가 2개 이상일 때 ex) 트리, 그래프 비선형 탐색법 = DFS, BFS 1. 그래프의 구현 그래프의 구현은 크게 인접 행렬과 인접 리스트로 나눌 수 있다. 입력으로 정점(n), 간선(m)이 주어지고 m개의 줄에 걸쳐 간선으로 연결된 두 정점의 번호와 가중치가 입력으로 주어질 때 1) 인접 행렬의 구현 2차원 배열을 이용해 표현한다. 최대 정점 수에 맞춰 2차원 배열을 선언하고 각 배열의 칸에 연결된 정보를 저장한다. 모든 정점을 탐색하는 데 O(nm) 인접행렬 소스코드 n, m = map(int, input().split())..

코딩/알고리즘 2024.03.23

[백준/3052/파이썬] 나머지 풀이

# 42로 나눈 나머지 배열할 리스트 n_list = [] # n_list의 요소중 2개 이상인것만 배열할 리스트 n2_list = [] # 1~10까지 범위 설정 for i in range(1, 10+1): # n값 입력 n = int(input()) # rest변수는 n % 42의 나머지 값 rest = n % 42 # n_list리스트에 나머지 값을 요소로 배열 n_list.append(rest) # n_list에 rest의 개수가 2개 이상일때(중복) if n_list.count(rest) >= 2: # n2_list에 중복된 값 배열 n2_list.append(rest) # i 값이 10일때 if i == 10: # n_list 요소 개수 - n2_list 요소 개수 print(len(n_lis..

카테고리 없음 2023.03.03

[백준/10810/파이썬] 공 넣기 풀이

https://www.acmicpc.net/problem/10810 10810번: 공 넣기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 www.acmicpc.net # 전체 바구니개수 n, 공을 넣을 횟수 m n, m = map(int, input().split()) # 바구니 나열을 위해 basket리스트를 만들고 n개수만큼 요소를 0으로 초기화 basket = [0 for _ in range(n)] # m번만큼 차례대로 반복 for _ in range(m): # i번 바구니에서 j번 바구니까지 k숫자의 공을 넣음 i, j, k = map(int, inp..

[백준/10813/파이썬] 공바꾸기 풀이

https://www.acmicpc.net/problem/10813 n, m = map(int, input().split()) # 바구니개수n, 바꿀횟수m n_list = [item for item in range(1, n+1)] # 바구니 개수의 번호 n_list for _ in range(m): # 횟수 m번 차례로 반복 i, j = map(int, input().split()) # 바구니 번호 i, j temp = n_list[j-1] # temp(임시저장공간) = j번의 바구니 n_list[j-1] = n_list[i-1] # ex)i,j = 1, 2 일때 ([1]=2) = ([0]=1) n_list[i-1] = temp # i번의 바구니 = j번 바구니 for x in n_list: # n_li..

[백준/5997/파이썬] 과제 안 내신 분..? 풀이

student = [ i for i in range(1, 30+1)] # 전체학생들 = 30명 for _ in range(28): # 출석한 28명 n = int(input()) # n = 출석한 학생의 번호 student.remove(n) # 결석한 학생 = 전체학생들 - 출석한 학생의 번호 print(min(student)) # 결석한 학생 중 가장 낮은 번호 print(max(student)) # 결석한 학생 중 가장 높은 번호 1번째 줄의 코드는 한줄 반복문으로 student = [] for i in range(1, 30+1): student.append(i) print(student) student = [range(1, 30+1)] print(student) 위 두 코드와 모두 같지만 훨씬 간편..

[백준/10818번/파이썬] 최소, 최대 문제풀이

순차 검색 풀이 n = int(input()) # 전체 정수n n_list = list(map(int, input().split())) # n의 리스트 max = n_list[0] # n리스트의 최댓값 min = n_list[0] # n리스트의 최솟값 for i in n_list: # n리스트의 요소 차례로 반복 if i > max: # i요소가 max보다 클때 max = i # max에 i 할당 if i < min: # i 요소가 min보다 작을때 min = i # min에 i 할당 print(min, max) # min, max 출력 최대, 최소 함수 풀이 n = int(input()) # 전체 정수n n_list = list(map(int, input().split())) # n의 리스트 print..

[백준/10871번/파이썬] X보다 작은 수 풀이

한줄씩 출력 n, x = map(int, input().split()) # 전체정수n, 비교할 정수x a = map(int, input().split()) # a는 전체정수n의 수열(리스트) for i in a: # 리스트a에서 요소를 차례로 반복 if i < x: # 요소i가 비교할 정수x 보다 작을때 print(i) # i 출력 한번에 출력 n, x = map(int, input().split()) # 전체정수n, 비교할 정수x a = list(map(int, input().split())) # a는 전체정수n의 수열(리스트) for i in range(n): # 0~n-1까지 범위 반복 if a[i] < x: # 비교할 정수x보다 a의 요소가 작다면 print(a[i], end=" ") # 줄바꿈 ..

[백준/10807번/파이썬] 개수 세기 풀이

합계를 위한 변수 생성 n = int(input()) # 정수의 개수 변수 n_list = list(map(int, input().split())) # 정수의 리스트 v = int(input()) # 찾고자 하는 정수 total = 0 # 정수의 개수 for i in n_list: # 리스트를 하나씩 반복 if v == i: # 찾고자 하는 정수와 i 값이 같다면 total += 1 # 정수 개수에 +1 print(total) # 정수 개수 출력 count 함수 n = int(input()) # 정수의 개수 변수 n_list = list(map(int, input().split())) # 찾고자 하는 정수 v = int(input()) # 정수의 개수 print(n_list.count(v)) # n_li..

[백준/1110번/파이썬] 더하기 사이클 풀이

n = int(input()) num = n total = 0 while True: a = num // 10 b = num % 10 c = (a + b) % 10 num = b*10 + c total += 1 if num == n: break print(total) """ 1. 최초 입력값 n 생성 2. while문으로 들어가서 반복할때 n을 대신할 새로운 변수가 없으면 무한반복 일어남. (9번째줄 참조) 3. 반복횟수 변수 total 5. 계속 반복 6. num = 26 일때 a= 2 7. b = 6 8. c= 8 % 10 = 8 9. num = 60 + 8 = 68 // num변수 생성없이 n값 그대로 하면 다시 a= 2...로 무한반복 11. total +1 12. 만약 num == n 이면 13...

[파이썬] 영단어 퀴즈 프로그램 소스코드

준비 -지난시간 암기를 위해 만들어 놓은 voca.txt(영단어장)이 먼저 필요하다. 실행에 앞서 voca.txt와 vocatest.py(퀴즈 프로그램 소스코드) 가 모두 한 폴더 내에 있어야한다. 직접 접근하기 위해선 ex) C:/python/python1/python1_1/python1_1_1 과 같이 상위폴더에서 / 를 통해 접근하면 된다. [파이썬] 영단어장 만들기 소스코드 같은 파일 내에 word.txt(단어장)과 word.py(소스코드)가 있어야합니다. 소스코드 파일을 실행해서 단어와 뜻을 입력하면 실제 파일에 단어와 뜻이 출력됩니다. with open("word.txt", 'w') as f: while True: voca luttbaam-e.tistory.com 소스코드 with open("..