Python
99클럽 코테 스터디 15일차 TIL - 그리디 (백준13417 - 카드 문자열)
99클럽 코테 스터디 15일차 TIL - 그리디 (백준13417 - 카드 문자열)
2024.11.11https://www.acmicpc.net/problem/13417오늘의 학습 키워드 : 그리디1. 덱 초기화:첫 번째 카드는 그대로 덱(초기값 설정)2. 카드를 덱의 왼쪽 또는 오른쪽에 추가: 2-1. c 2-2. c > queue[0]: 새 카드가 더 크면 덱의 오른쪽에 추가3. 덱을 문자열로 변환 후 출력 : ''.join(queue)를 사용해 문자열로 합치고 출력공부한 내용 - 덱으로 생각했던 이유 : 양쪽 끝에서 빠르게 원소를 추가import sysfrom collections import deque# 테스트 케이스 수를 입력받음T = int(sys.stdin.readline().strip())# 각 테스트 케이스에 대해 처리for i in range(T): # 카드의 개수를 ..
99클럽 코테 스터디 14일차 TIL - 그리디 (백준14916 - 거스름돈)
99클럽 코테 스터디 14일차 TIL - 그리디 (백준14916 - 거스름돈)
2024.11.10https://www.acmicpc.net/problem/14916오늘의 학습 키워드 : 그리디공부한 내용 import sysdef min_coins(n): # 5원짜리 동전의 최대 개수를 구합니다. count_5 = n // 5 while count_5 >= 0: # 5원짜리를 최대한 사용한 후 남은 금액을 2원짜리로 채울 수 있는지 확인 remaining = n - (count_5 * 5) if remaining % 2 == 0: count_2 = remaining // 2 return count_5 + count_2 count_5 -= 1 # 5원과 2원으로 정확히 맞출 수 ..
99클럽 코테 스터디 13일차 TIL - 그리디,이분탐색 (백준27961 - 고양이는 많을수록 좋다)
99클럽 코테 스터디 13일차 TIL - 그리디,이분탐색 (백준27961 - 고양이는 많을수록 좋다)
2024.11.09https://www.acmicpc.net/problem/27961오늘의 학습 키워드 : 그리디..? 이분탐색?공부한 내용 import sys# 최소 동작 수를 계산하는 함수 정의def min_actions(N): actions = 0 # 2의 actions 제곱이 N 이상이 될 때까지 actions 증가 while 2 ** actions import sys# 입력 값 N을 받음N = int(sys.stdin.readline().strip())# 이진 탐색 범위 설정# 2**10 ≈ 10**3 이므로 2**40 ≈ 10**12 정도로 충분히 큰 범위를 잡음start, end = 0, 40result = 0# 이진 탐색을 통해 2의 몇 제곱이 N 이상인지 찾기while start = N: ..
99클럽 코테 스터디 12일차 TIL - BFS (백준7569- 토마토)
99클럽 코테 스터디 12일차 TIL - BFS (백준7569- 토마토)
2024.11.08https://www.acmicpc.net/problem/7569오늘의 학습 키워드 : BFS1. BFS로 최소 일수 계산2. 초기 상태에서 익은 토마토를 큐에 넣기3. 6방향 탐색문제의 조건에 따라 위, 아래, 왼쪽, 오른쪽, 앞, 뒤의 6방향4. 최대 일수 갱신BFS를 진행하면서 days 변수를 매 단계 갱신하며, 모든 토마토가 익을 때까지 걸린 최대 일수를 기록 최종적으로 모든 토마토가 익었을 때 max_days가 최소 일수5. 최종 상태 체크(토마토가 모두 익지 않았는지 익었는지 체크 필요)- 만약 남아있다면, -1을 출력하고 종료하여 불가능한 경우를 처리- 반면 , 모든 토마토가 익었다면, max_days를 출력합니다.공부한 내용 import sysfrom collections import de..
99클럽 코테 스터디 8일차 TIL - DFS&BFS (백준2644- 촌수계산)
99클럽 코테 스터디 8일차 TIL - DFS&BFS (백준2644- 촌수계산)
2024.11.04https://www.acmicpc.net/problem/2644오늘의 학습 키워드 : DFS & BFS공부한 내용 예제1예제2DFS로 푼 경우import sys# 입력 처리n = int(sys.stdin.readline().strip()) # 총 사람의 수a, b = map(int, sys.stdin.readline().strip().split()) # 촌수를 계산할 두 사람m = int(sys.stdin.readline().strip()) # 관계의 수graph = [[] for _ in range(n + 1)] # 각 사람의 관계를 나타내는 인접 리스트# 관계 정보 입력for i in range(m): x, y = map(int, sys.stdin.readline().strip().sp..
99클럽 코테 스터디 7일차 TIL - (프로그래머스 - 모음사전)
99클럽 코테 스터디 7일차 TIL - (프로그래머스 - 모음사전)
2024.11.03프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr오늘의 학습 키워드 : 브루트 포스이론,,?공부한 내용 def solution(word): # 사전 순서대로의 모음 리스트 vowels = ['A', 'E', 'I', 'O', 'U'] # 각 자리에서 한 글자가 바뀔 때 뒤에 따라붙는 가능한 단어의 수 (가중치) # 첫 번째 자리의 가중치는 5^4 + 5^3 + 5^2 + 5^1 + 5^0 = 781 # 두 번째 자리의 가중치는 5^3 + 5^2 + 5^1 + 5^0 = 156 # 세 번째 자리의 가중치는 5^2 + 5^1 + 5^0 = 31 # 네 번째 자리의 ..
99클럽 코테 스터디 6일차 TIL - BFS (백준 2458번 - 키 순서)
99클럽 코테 스터디 6일차 TIL - BFS (백준 2458번 - 키 순서)
2024.11.03https://www.acmicpc.net/problem/2458오늘의 학습 키워드 : 플로이드 워셜, BFS공부한 내용 -> 그림은 코드 설명import sysfrom collections import deque # BFS 구현을 위한 deque 사용# 학생 수 N과 비교 횟수 M을 입력 받음N, M = map(int, sys.stdin.readline().strip().split())# 각 학생에 대한 인접 리스트 생성graph = [[] for _ in range(N + 1)] # 자신보다 큰 학생들을 저장하는 그래프reverse_graph = [[] for _ in range(N + 1)] # 자신보다 작은 학생들을 저장하는 그래프# 키 비교 관계 입력for i in range(M): ..
99클럽 코테 스터디 4일차 python TIL - 이분탐색(백준2512 예산)
99클럽 코테 스터디 4일차 python TIL - 이분탐색(백준2512 예산)
2024.11.01https://www.acmicpc.net/problem/2512 오늘의 학습 키워드 : 이분탐색공부한 내용import sys# 입력 처리N = int(sys.stdin.readline().strip()) # 지방의 수d = list(map(int, sys.stdin.readline().strip().split())) # 각 지방의 예산 요청M = int(sys.stdin.readline().strip()) # 총 예산# 이분 탐색 초기 설정start, end = 0, max(d)answer = 0# 이분 탐색 수행while start mid: result += mid # 상한액을 넘는 요청은 상한액으로 배정 else: result += i ..
99클럽 코테 스터디 3일차 python TIL - 이분탐색(프로그래머스 입국심사)
99클럽 코테 스터디 3일차 python TIL - 이분탐색(프로그래머스 입국심사)
2024.11.01프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr오늘의 학습 키워드 : 이분탐색, DP 공부한 내용def solution(n, times): # 탐색 범위 설정: 최소 시간과 최대 시간 start = min(times) end = max(times) * n answer = 0 # 이분 탐색 while start = n: answer = mid # 가능한 최소 시간 저장 end = mid - 1 # 더 작은 시간 범위를 탐색 else: start = mid + 1 # 더 많은 시간을 필요로 하는 범위..
99클럽 코테 스터디 2일차 TIL - 이분탐색 (백준 1072번 )
99클럽 코테 스터디 2일차 TIL - 이분탐색 (백준 1072번 )
2024.10.29https://www.acmicpc.net/problem/11561 오늘의 학습 키워드 : 이분탐색공부한 내용import sysimport math# 테스트 케이스의 수T = int(sys.stdin.readline().strip())for _ in range(T): N = int(sys.stdin.readline().strip()) # 1. 최대 점프 횟수의 추정값을 구합니다. max_jump = math.isqrt(2 * N) # math.isqrt()는 정수 제곱근을 구해줌 # 2. 가장 큰 max_jump 값 중에서 조건을 만족하는 최대 값 찾기 if max_jump * (max_jump + 1) // 2 오늘의 회고일단 나는 항상 문제를 풀면,, 알고리즘보다..
99클럽 코테 스터디 1일차 TIL - 이분탐색 (백준 1072번 )
99클럽 코테 스터디 1일차 TIL - 이분탐색 (백준 1072번 )
2024.10.28https://www.acmicpc.net/problem/1072 오늘의 학습 키워드 : 이분탐색공부한 내용import sys#게임 횟수 X, 승리 횟수 YX,Y = map(int,sys.stdin.readline().strip().split())#재귀형 이진 탐색 함수 정의def binary_search(X,Y,start,end): #1.종료-> start가 최소 게임 횟수 나타냄. if start>end: return start #중간값 mid = (start+end)//2 # print("mid : ",mid) #mid 계산 후 승률 다시 계산(NEW Z) result = (Y+mid)*100//(X+mid) #2.새로 ..
리스트 안에 map 넣기 - list(map(int,input().split()))
리스트 안에 map 넣기 - list(map(int,input().split()))
2022.05.13( 참고자료 : https://dojang.io/mod/page/view.php?id=2286 ) list(map(함수, 리스트)) if 실수로 저장된 리스트를 정수 리스트로 바꾸고 싶은 경우 : a = [1.2, 2.5, 3.7, 4.6] for i in range(len(a)): a[i] = int(a[i]) print(a) #[1, 2, 3, 4] 이런 형태로 for 반복문을 활용하여 리스트 원소 하나씩 접근하여 변환해야한다. 이 때, map(함수,리스트)을 사용하여 변경할 경우 함수 안에 int, 리스트를 넣으면 한 줄로 실수형 리스트를 정수형 리스트로 변환이 가능하다 a = [1.2, 2.5, 3.7, 4.6] a = list(map(int, a)) print(a) #[1, 2, 3, 4] 또,..