전체 글 241

[Python] 백준 2504번 괄호의 값

문제 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net 입력 첫째 줄에 괄호열을 나타내는 문자열(스트링)이 주어진다. 단 그 길이는 1 이상, 30 이하이다. 출력 첫째 줄에 그 괄호열의 값을 나타내는 정수를 출력한다. 만일 입력이 올바르지 못한 괄호열이면 반드시 0을 출력해야 한다. 입력 예제 (()[[]])([]) 출력 예제 28 문제 풀이 열린 괄호 임시변수에 각 괄호 값에 맞는 값을 곱하고, 스택에 열린 괄호를 넣는다. '('는 2를 곱하고, '['는 3을 곱한다. 닫힌 괄호 스택이 비었거나 괄호의..

[Python] 백준 1063번 킹

문제 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 입력 첫째 줄에 킹의 위치, 돌의 위치, 움직이는 횟수 N이 주어진다. 둘째 줄부터 N개의 줄에는 킹이 어떻게 움직여야 하는지 주어진다. N은 50보다 작거나 같은 자연수이고, 움직이는 정보는 위에 쓰여 있는 8가지 중 하나이다. 출력 첫째 줄에 킹의 마지막 위치, 둘째 줄에 돌의 마지막 위치를 출력한다. 입력 예제 A1 A2 5 B L LB RB LT 출력 예제 A1 A2 문제 풀이 먼저 들어오는 킹과 돌의 위치를 형식에 맞게 파싱한다. 그 후 돌이나 킹이 맵 밖으..

[Python] SWEA 13428번 숫자 조작

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 숫자 길이가 그다지 길지 않으므로, 모든 인덱스 값을 리스트에 넣은 후, 조합을 사용하여 2개씩 뽑는다. 2개씩 뽑은 값의 인덱스들을 바꾼 후, 앞자리가 0이라면 원위치 시키고, 앞자리가 0이 아니라면, 제일 큰 수와 제일 작은 수를 비교하여 대소를 가린 후, 이 값이 더 크다면 max_val에 더 작다면 min_val에 넣는다. 비교를 마쳤다면 꼭 다시 바꾼 인덱스끼리 바꿔 원위치 시켜준다 tmp: min_val = tmp # 비교 후 원상복귀 n[i],n[j] = n[j],n[i] print(f'#{tc + 1}',min_val,max_val)

[Python] SWEA 1228,1230번 암호문1, 암호문3

1228번 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 삽입되는 위치와 개수, 삽입되는 모든 숫자들은 I뒤에 나오므로, I가 나온 다음 값들만 탐색한다. I바로 다음 값은 삽입위치, 그 다음 값은 삽입해야 할 숫자들의 총 개수이므로, 각각의 값들을 파싱해준 후, 삽입해야 할 숫자들의 개수만큼 for문을 돌려, 원래 저장되어있는 리스트에 값을 하나씩 삽입한다. 위 과정을 반복하여 삽입을 모두 마쳤다면 앞에서 10개까지만 형식에 맞게 출력한다. 코드 for tc in range(10): n = int(input()) array = list(map(int,input().split())) chang..

[Python] SWEA 2817번 부분 수열의 합

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 재귀적으로 리스트의 각 값을 더해가면서 k값이 됐을 때 카운트 해 준다. 카운트 한 값을 형식에 맞게 출력한다. 코드 def find_k_val(index, num): # 더한 값이 k인 횟수를 세는 전역변수 global cnt # 재귀 종료조건 (인덱스 끝까지 탐색을 마친경우, 더한 값이 k인 경우) if num == k: cnt += 1 return if index == n: return # 값을 더하기 위해 현재 인덱스의 값 임시변수에 할당 tmp = array[index] find_k_val(index+1, num + tmp) # 현재 값에..

Algorithm/BFS&DFS 2023.05.15

[Python] SWEA 2814번 최장경로

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 노드 수 만큼 dfs탐색을 진행하여, 재귀를 진행한 횟수를 세면 깊이를 알 수 있다. 출발 노드에서 모든 노드로 각각 탐색을 진행하고, 탐색 중 깊이가 이전 깊이보다 깊을 때 마다, max_val의 값을 갱신한다. 재귀를 마친 후, 다시 탐색을 진행해야 하므로 방문 리스트의 값을 다시 해제 한 후, 모든 탐색을 마쳤다면 max_val의 값을 리턴 후, 형식에 맞게 출력한다. 코드 def dfs(now, cnt): global max_val if max_val < cnt: max_val = cnt visited[now] = True for i in ..

Algorithm/BFS&DFS 2023.05.15

[Python] SWEA 1216번 회문2

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 회문의 길이를 제일 큰 값(100)부터 1까지 돌리면서 회문인지 체크하고, 회문이라면 바로 출력하고 종료한다. 회문인지 검사하기 위해 가로 세로 값을 바꾼 새로운 리스트 선언하여 가로 회문 찾는 함수에 넣어 가로, 세로 순으로 된 두 배열 중 하나라도 회문이라면 회문길이 i를 형식에 맞게 출력한다. 출력 한 후, 종료 해야하므로 꼭 break한다, 코드 # 제일 긴 가로 회문 구하기 def get_longest_palindrome(word_len,array): for i in range(n_len): for j in range(n_len - wor..

[Python] SWEA 5215번 햄버거 다이어트

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 탐색하려는 최대 맛의 합을 전역변수로 놓고 dfs탐색을 진행하여, 인덱스 별 재료를 넣는 경우와, 넣지 않는 경우로 나눠서 탐색한다. dfs 탐색을 하면서, 최대 맛 값을 계산하기 위해 맛을 계산하는 임시 변수에 인덱스 별 맛 값을 더한 후, 그 값이 최대 맛 값을 저장해놓은 max_taste값보다 크다면 max_taste값을 갱신한다. 칼로리 값도 위와 같이 계산한 후, 재귀함수를 실행할 때 총 칼로리의 합이 제한 되어있는 칼로리 값보다 더 크다면 호출을 종료한다. 그 후 마지막인덱스까지 돌았다면 종료한다. 마지막 인덱스의 칼로리와 맛을 계산하면..

Algorithm/BFS&DFS 2023.05.13

[Python] SWEA 1860번 진기의 최고급 붕어빵

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 손님을 온 순서대로 오름차순 정렬한다. 손님이 온 시각까지 만들어진 붕어빵 개수는 (도착시간 // m) * k이다. 붕어빵을 만드는 데 소요되는 시간(M)으로 나눈 몫의 횟수만큼 붕어빵을 만들 수 있고, m초에 k개를 만들 수 있으므로, 나눈 몫에 k를 곱한다. 그 후 인당 한 개씩 붕어빵을 구매하므로 (i + 1)값을 빼 주면, 현 시각 붕어빵을 구매하고 남은 총 개수를 구할 수 있다. 계산된 붕어빵의 개수는 array[i]초에 1개를 구매하고 난 후의 붕어빵 개수이므로, 빵의 값이 0이아닌 음수일 때 구매할 수 없는 상태로 보고 결과를 impo..

Algorithm/Greedy 2023.05.12