본문 바로가기
728x90

Programming Language Training/Python73

Baekjoon Training #3085 #3085 사탕 게임 import sys input = sys.stdin.readline n = int(input()) board = [list(input()) for _ in range(n)] # 게임판을 세팅할 2차원 배열 board정의 max_count = 0 # 결과를 도출할 최대값 카운터 0으로 초기화 def check(): # 같은 색의 사탕이 있나 체크하는 함수 global max_count # max_count값을 전역변수로 선언 for i in range(n): cnt = 1 # 기본적을 연속된 사탕의 수는 1로 초기화 for j in range(n-1): # 오른쪽 방향 체크 if board[i][j]==board[i][j+1]: # 우측 사탕과 색이 일치하면 cnt += 1 # cnt.. 2023. 3. 9.
Baekjoon Training #1715 #1715 카드 정렬하기 import heapq import sys input = sys.stdin.readline n=int(input()) cards = [int(input()) for _ in range(n)] heapq.heapify(cards) # cards 리스트를 힙으로 바꿔주는 함수 ans = 0 # 결과의 초기값을 0으로 설정 while len(cards) > 1: # cards 리스트의 길이가 1보다 클때 연산을 진행 tmp = heapq.heappop(cards) + heapq.heappop(cards) # 최소값 두개의 합을 tmp에 저장하고 heapq.heappush(cards, tmp) # 해당 tmp값을 heap에 넣음 ans += tmp # 정답에 tmp값을 더해나감 prin.. 2023. 3. 5.
Baekjoon Training #11053 #11053 가장 긴 증가하는 부분 수열 import sys input = sys.stdin.readline n = int(input()) # 수열의 크기 입력 num_list = list(map(int,input().split())) # 수열을 이루는 숫자 입력 # dp 리스트 생성 dp = [0 for _ in range(n)] # 이중 for문을 이용하여 증가수열 관리 for i in range(n): for j in range(i): if num_list[i] > num_list[j] and dp[i] < dp[j]: dp[i] = dp[j] dp[i] += 1 print(max(dp)) # 최대 증가수열의 크기 출력 이중 for문은 최대 증가수열을 찾는 알고리즘으로 이 코드의 핵심 발상이다. 우.. 2023. 2. 24.
Baekjoon Training #2606 #2606 바이러스 직관적으로 푼 풀이 import sys input=sys.stdin.readline num=int(input()) # 컴퓨터의 수 입력 net=int(input()) # 연결된 컴퓨터쌍의 수 pc=[0 for _ in range(num+1)] # 컴퓨터수+1개의 0으로 이루어진 pc리스트 생성 pc[1]=1 # 감염시킬 1번 컴퓨터를 1로 세팅 for i in range(net): a,b=map(int,input().split()) if (pc[a]==1 or pc[b]==1): # 연결된 컴퓨터중 한대라도 감염되어있다면 # 전부 감염됨 pc[a]=1 pc[b]=1 # 1번 컴퓨터로 인해 감염된 컴퓨터의 수 출력 print(pc.count(1)-1) 첫번째 풀이는 문제를 읽자마자 간단.. 2023. 2. 22.
Baekjoon Training #11725 #11725 트리의 부모 찾기 import sys sys.setrecursionlimit(10**9) # 재귀의 깊이 제한을 풀어줌 input=sys.stdin.readline n=int(input()) graph=[[] for _ in range(n+1)] # 빈 2차원 리스트 graph생성 checked=[0 for _ in range(n+1)] # 0으로 채워진 2차원 리스트 checked생성 answer=[1 for _ in range(n+1)] # 1으로 채워진 2차원 리스트 answer생성 # dfs 인접노드 체크 함수 def dfs(node): checked[node]=1 # 체크하는 노드를 체크완료 표시로 1을 입력 for i in graph[node]: if checked[i] == 0:.. 2023. 2. 13.
Baekjoon Training #1759 #1759 암호 만들기 combination 활용 import sys from itertools import combinations input = sys.stdin.readline l, c = map(int, input().split()) letters = list(map(str, input().split())) # 사전순으로 정렬 letters.sort() # 가능한 조합 전부 생성 pos_code = combinations(letters, l) # 모음 리스트 생성 vowel = ['a', 'e', 'i', 'o', 'u'] # 모음 1개 이상, 자음 2개 이상인 코드만 출력 for code in pos_code: vowel_num = 0 const_num = 0 for i in range(l): i.. 2023. 2. 9.
식단 평가 프로그램 (Back-end 연결을 중심으로) Diet_Judgement 아래 코드는 다이어트 분석을 수행하고 백엔드 서버와 통신하여 데이터를 검색하고 전송하는 파이썬 코드이다. 식단 평가는 "diet_judgement"라는 함수를 통해 수행된다. 나이, 키, 몸무게, 성별, 칼로리 섭취, 단백질 섭취, 탄수화물 섭취, 지방 섭취, 운동 시간 등 다양한 파라미터가 필요하다. 이 기능은 주어진 매개변수를 이용해 기초대사량(BMR)과 총에너지지출(TEE)을 계산한 뒤 각 macronutrient(단백질, 탄수화물, 지방)와 일일 권장치의 비율을 비교해 식단의 균형 여부를 판단한다. import requests calorie_judgement = "default" protein_judgement = "default" carbohydrate_judgemen.. 2023. 2. 8.
Baekjoon Training #1193 #1193 분수찾기 문제를 보자마자 짜본 단순한 코드 import sys input = sys.stdin.readline numer_list = [] denom_list = [] numer = 1 denom = 1 trigger = 0 n = int(input()) for i in range(n): numer_list.append(numer) denom_list.append(denom) if (numer == 1) and (trigger == 0): denom += 1 trigger = 1 elif (denom == 1) and (trigger== 0): numer += 1 trigger = 1 else: if (numer + denom) % 2 == 1: numer += 1 denom -= 1 if d.. 2023. 2. 4.
Baekjoon Training #10844 #10844 쉬운 계단 수 import sys input = sys.stdin.readline n = int(input()) dp = [[0] * 10 for _ in range(n + 1)] # 1부터 9까지의 수로 첫번째 배열을 채움 for i in range(1,10): dp[1][i] = 1 # dp[n자리 수][n자리 숫자일 때 해당 index 앞에 올 수 있는 일의 자리 수] # 2 자리수부터 시작 for i in range(2, n+1): for j in range(10): # index기반으로 전부 조사 # 뒷자리가 0일 때는 이전에 한가지 경우의 합으로 구함 if j == 0 : dp[i][j] = dp[i-1][j+1] # 뒷자리가 9일 때는 이전에 한가지 경우의 합으로 구함 elif .. 2023. 2. 2.
728x90