# D4

[SWEA] 3752. 가능한 시험 점수★
3752. 가능한 시험 점수 틀린 문제 풀이1 런타임 에러 발생 사용 틀린 문제 풀이2 제한 시간 초과 DFS를 활용한 조합 사용 정답 문제 풀이 DP 사용 참고 자료 DFS 순열/조합 참고 코드

[SWEA] 2819. 격자판의 숫자 이어 붙이기
2819. 격자판의 숫자 이어 붙이기 원래 문제 풀이 기존에는 답이 자꾸 9로 나와서 실패했었다. BFS로 문제 풀이 BFS로 풀이 now를 deque안에 넣어 같이 관리했더니 정답이 나왔다. 그리고, now의 길이가 7일때 을 하면 더이상 이동하지 않기 때문에 를 이용해 계속 이동할 수 있게 하였다. DFS로 문제 풀이

[SW Expert Academy] 1219 [S/W 문제해결 기본] 4일차 - 길찾기
그림과 같이 도식화한 지도에서 A도시에서 출발하여 B도시로 가는 길이 존재하는지 조사하려고 한다. 길 중간 중간에는 최대 2개의 갈림길이 존재하고, 모든 길은 일방 통행으로 되돌아오는 것이 불가능하다. 다음과 같이 길이 주어질 때, A도시에서 B도시로 가는 길이 존재하는지 알아내는 프로그램을 작성하여라. A와 B는 숫자 0과 99으로 고정된다. 모든 길은 순서쌍으로 나타내어진다. 위 예시에서 2번에서 출발 할 수 있는 길의 표현은 (2, 5), (2, 9)로 나타낼 수 있다. 가는 길의 개수와 상관없이 한가지 길이라도 존재한다면 길이 존재하는 것이다. 단 화살표 방향을 거슬러 돌아갈 수는 없다. [제약 사항] 출발점은 0, 도착점은 99으로 표현된다. 정점(분기점)의

[SWEA] 1226. [S/W 문제해결 기본] 7일차 - 미로1
1226. [S/W 문제해결 기본] 7일차 - 미로1 문제 풀이 1. dfs로 풀이 2. bfs로 풀이 위 - DFS 풀이 / 아래 - BFS 풀이

[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기
1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 문제 풀이 다른 정답 코드 if-else 문으로 구현하였는데, 딕셔너리를 활용한 깔끔한 코드를 보았다.

[SWEA] 1210. [S/W 문제해결 기본] 2일차 - Ladder1 ★
1210. [S/W 문제해결 기본] 2일차 - Ladder1 문제 풀이 1인 좌표부터 시작해서 2에 도달하면 멈추는 코드를 구현하였다. 예시인 10x10 배열에서는 정답이 잘 도출되었는데 input 파일의 예시는 통과하지 못했다. 다른 정답 풀이 참고 블로그 https://devlibrary00108
SWEA 1249 보급로 문제
[SWEA 1249] (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD) 최저 비용으로 경로를 탐색하는 문제다. 문제의 조건을 2차원 배열 map으로 받았다. 또한, 특정 위치로 갈 때의 최소의 비용을 저장하는 2차원 배열을 cost로 하였다. 예) costi는 (i,j)로 가는 (지금 껏 계산한) 최소한의 비용이다. > cost는 지금 껏 계산한 비용보다 저렴한 비용으로 방문이 가능하면 해당 값으로 갱신한다. 갱신만 하면 끝이 아니다. 이 갱신으로 영향을 받을 수 있는 주변 좌표들 또한 재 갱신을 해야 하기에 해당 좌표를 다신 방문해야 하므로 다시 queue에 넣어야 한다. 코드 [깃허브](https://github.com/wonchul98/SWEA/blob/main/SWEAgithubu

5432 - 쇠막대기 자르기
문제 설명 링크 문제 풀이 규칙성을 찾는다. > 1. '(' 는 막대기를 추가한다. ')' 일 때, 바로 앞이 '(' 이면 바로 앞이 ')' 이면 막대기가 감소한다. 코드

3143 - 가장빠른문자열타이밍
문제 설명 링크 문제 풀이 > 1. 부터 값과 B를 비교한다. 일치할 경우, 반복하는 인덱스를 B의 길이만큼 더한다. 위 과정을 반복한다. 코드

1210 - Ladder1
문제 설명 링크 문제 풀이 각 위치에서 방향과 인덱스를 고려해주어야 하기 때문에 재귀함수로 구현하였다. >1. 맨 아래의 2 원소가 있는 인덱스를 찾는다. 해당 인덱스를 시작으로 재귀함수를 사용해 아래에서 위로 올라간다. 올라가는 방향은 direction = 0, 왼쪽 방향은 direction = -1, 오른쪽방향은 direction = 1 로 설정한다. 올라가는 방향일 경우 왼쪽 또는 오른쪽에 인덱스가 존재하는지 확인한 후 있으면 길이 있는지 확인한다. 왼쪽 또는 오른쪽 방향일 경우 위쪽
[SWEA] 3143 가장 빠른 문자열 타이핑
Python code import sys sys.stdin = open("input.txt") N = int(input()) for tc in range(1, N+1): str1, str2 = map(str, input().split()) if str2 in str1: cnt = str1.count(str2) total = cnt + len(str1)-len(str2)*cnt print('#{} {}'.format(tc, total))

[SWEA] 4408. 자기 방으로 돌아가기(D4)
문제 - 4408. 자기 방으로 돌아가기(D4) 풀이 처음에는 짝수방과 홀수방을 따로 나눠서 생각하지 말고 통로라는 새로운 배열을 만들면 쉽게 해결할 수 있다. room1과 room2가 공유하는 복도가 corridor[1]이 된다. 이렇게 끝방까지 총 1에서 200까지의 통로가 있다. 해당 통로를 지나가는 학생이 있다면 해당 통로의 값에 +1을 해준다. 학생들이 지나간 후 corridor배열의 max값을 출력하면 총 걸리는 시간이 나온다. 
[SWEA] 5432. 쇠막대기 자르기(D4)
문제 - 5432.쇠막대기 자르기(D4) 풀이 이 문제가 D4인 이유는 막대기와 레이저를 구분하기 어려워서라고 생각한다. 막대기도 괄호로 표시하고, 레이저도 괄호로 표시하기 때문에 판별을 잘 해줘야한다. 하지만 replace함수를 쓴다면 쉽고 간편하게 레이저를 막대와 분리할 수 있다. 이렇게 ()를 로 바꿔주면 간편하게 막대와 를 바꿔줄 수 있다. 그 다음에는 로직이 쉬워진다. 변수명을 아무렇게나 정한 것 같아서 좀 그렇지만.. original은 현재 자를 수 있는 막대의 수, result는 결과이다. *를 만나면 내가 가지고 있는 막대의 수만큼 막대기가 늘어난다. 그래서 result에 original을 더해준다. (를 만나면 가지고 있는 막대기가 하나 더 증가했다는 뜻이니 origi

[SWEA] 1218. 괄호 짝짓기(D4)
문제 - 1218.괄호 짝짓기(D4) 풀이 괄호의 짝을 맞춰주는 것을 뺀다면 어려운 문제가 아니었다. replace 함수를 쓰면 간단하게 바뀌는 문제였다. 순서는 이와 같다. 기존의 문자열에서 ()를 없앤 문자열에서 []를 없애고, []까지 없앤 문자열에서 를 없애고, 까진 없앤 문자열에서 {}까지 없앤 것을 input에 넣어준 것이다. ([])면 처음에는 {} 하나만 없어지고, 모든 괄호를 없애려면 while문이 4번 돌아가지만 {} 는 한번에 다 없어진다.
SWEA 1210
📝SWEA 1210 - Ladder 1 💡 문제접근 > DFS 같이 푸는 거 같음. 재귀사용할 수 있고, 아니면 for문 이용해서 돌릴수도 있고! > > ❗ 보통 사다리 타기가 위에서 아래로 내려가는건데, 이건 결과 2를 찾는거니까. 2를 먼저 찾고 위로 올라가면 시간을 단축시킬 수 있을거야. > > dx, dy를 이용해서 탐색하