SWEA 11

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

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 처음에 푼 풀이 도착시간 // 제조시간*붕어빵 = 총 붕어빵 수 1. 도착 시간이 제조시간 보다 빠르면 NO 2. 총 붕어빵 수 -1 씩 해서 붕어빵 수가 음수면 Impossible / 아니면 Possible 이렇게 2가지 생각하고 풀었는데, Test Case가 1000개중 997개만 맞았다. 왜그럴까 했는데 붕어빵을 95초에 1개씩 만들고, 145 - 200 - 225 이렇게 오면 200초에 2개..

SWEA 2023.03.03

[SWEA] 4881 배열 최소 합 - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N*N 배열에서 세로 안겹치고 뽑기 1~N까지 순열을 생성한 후, 그 순열에 해당하는 열을 배열에서 각각 뽑으면 된다 ! 1. 순열 생성 함수 만들기 2. 생성된 순열과 배열 매칭해서 더하기 3. 더해진 값에서 최소값 찾기 방법으로 코드를 짯는데, 시간초과가 계속 났ㄷㅏ.. 처음짠 코드 ( 시간초과 ) def f(i, k): total = 0 if i == k..

SWEA 2023.02.20

[SWEA] 4875 미로(백트래킹) - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 출발지점, 도착지점 찾기 2. stack에 현재 좌표 넣기 3. 스택에서 현재 좌표 pop 4. 주변에 갈 수 있는 곳 찾기 5. 갈 수 있으면 stack에 추가 후, 방문 표시 6. 갈 수 없으면 pass -> 다시 처음으로 돌아가 마지막으로 방문한 좌표 스택에서 꺼내고, 갈 수 있는곳 찾기 반복 7. 반복문이 끝난 후 목표 지점에 방문했는지 안했는지 ..

SWEA 2023.02.19

[SWEA] 4874 Forth - python

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 숫자면 stack에 넣고 2. 연산자면 stack에서 숫자 2개 pop 3. 연산 후 다시 스택에 넣기 4. stack에 남은 수 출력 -> 이때 stack에 남은 수가 1인지 검사해야함!!! 이거 안해서 계속 틀렷음 T = int(input()) for test_case in range(1, T+1): op = {'*': 2, '/': 2, '+': 1..

SWEA 2023.02.19

[SWEA] 4873 반복 문자 지우기 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 대표적인 stack 문제유형 222 중복 문자 지우기 우선 스택에 하나씩 담으면서 중복이 발생하면 pop하기 ! T = int(input()) for test_case in range(1,T+1): txt = list(input()) stack = [] for i in txt: # 스택이 비었으면 push if len(stack) == 0: stack.append(i) # 스택에 뭐가 있으면 else: # 스택의 맨 마지막 문자가 i와 같으면 pop if i == stack[-1]: stack.pop() else: stack.app..

SWEA 2023.02.18

[SWEA] 4866 괄호검사 - python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com stack의 대표적인 유형 괄호문제 pop하기 전에 항상 미리 stack이 있는지 체크해야하는데 까먹어서 자꾸 틀렸던 !!! while문을 돌려서 ans != 0 이 되는 시점에서 반복문을 멈춰도 될 것 같다 T = int(input()) for test_case in range(1, T+1): txt = list(input()) stack = [] ans = 0 for i in txt: # (나 {가 들어오면 stack에 넣기 if i == '(' or i == '{': stack.append(i) # )가 들어오고 스택의 마지막..

SWEA 2023.02.18

[SWEA] 4871 그래프 경로 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나에게 그래프가 뭔지 알려준 문제. . 이론도 쉽지 않았음 ( 하루 종일 그림 그린 사람 ) 대표적인 DFS 문제다 이 코드 그냥 통으로 외워야함 !!! def f1(start, goal, end): # start 시작 / goal 도착 / end 마지막 정점 visited = [0]*(end + 1) stack = [] v = start # 현재 위치 while True: if v == goal: # 현재 위치 = 목표 goal에 도달하면 return 1 # 성공 visited[v] = 1 for w in range(1, end+..

SWEA 2023.02.14

[SWEA] 1974 스도쿠 검증 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 다시 만난 스도쿠 !!! 나는 함수를 최대한 안쓰고 풀고 싶었다. 가로 세로 까지는 함수 안쓰고 할 수 있었는데, 3*3은 도저히 append 안쓰고 어케할지 모르겠는. 빈 리스트를 하나 준비한 후, 숫자가 들어오면 그 숫자에 해당하는 인덱스에 추가 9개가 다들어왔는데, 1~9까지 준비해놓은 sdo 리스트랑 불일치 하면 스도쿠 실패로 판별했다. 이것을 3*3 리스트를 append 없이 만들 능력이 부족해서 !! 3*3은 그냥 함수에 굴복하고 말았다. T = int(input()) # 여러개의 테스트 케이스가 주어지므로, 각각을 처리..

SWEA 2023.02.13

[SWEA] 1215 [S/W 문제해결 기본] 3일차 - 회문1 -python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 팰린드롬(회문)인지 판별하는 함수를 생성한다 2. 가로 리스트에서 나올 수 있는 모든 경우에 팰린 함수를 돌린다 3. 결과가 True고, 길이가 N이면 cnt 증가 나는야 팰린드롬 마스터 # 팰린드롬 판별 함수 def palin(str): for i in range(len(str)//2): if str[i] != str[len(str)-1-i]: return False break else: return True T = 10 # 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다. for test_case in range(1..

SWEA 2023.02.13

[SWEA] 3144 가장 빠른 문자열 타이핑 - python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. A의 i 부터 i+B의 길이 만큼 잘랐을 때, B랑 같으면 cnt 증가 2. i에 B의 길이만큼 더해서 다음 시작위치 변경 T = int(input()) # 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다. for test_case in range(1, T + 1): A, B = input().split() N = len(A) M = len(B) i = 0 cnt = 0 while i < N: if A[i:i+M] == B: cnt += 1 i += M else: i += 1 print(f'#{test_case} {cn..

SWEA 2023.02.13