"Boldness has genius, power, and magic in it." - Johann Wolfgang von Goethe
728x90
728x90

stack 4

1224. [파이썬 S/W 문제해결 기본] 6일차 - 계산기3

🚛 파이썬 SW 문제해결 기본 - Stack2 주어진 계산식을 1) 후위표기식으로 변경하고 2) 그 표기식을 계산하는 문제입니다. 연산자는 +, * 두 가지이고, 괄호의 유효성여부는 항상 옳은 경우만 주어집니다. 💡 아이디어 문제 그대로 후위표기식으로 주어진 문자열을 변경하고, 계산해주는 함수를 만들었습니다. 후위표기식 변경 시 숫자는 그대로 append하고 문자는 '(', '+', '*', ')' 에 대한 조건을 각각 만들어 스택에서 연산자 우선순위를 반영하는 코드를 만들었습니다. 후위표기식으로 바꿔서 계산하기, +, *, (,) 괄호는 항상 유효. 피연산자 0~9 + : 괄호가 없으면 스택에 있는 것들 pop, 괄호있으면 append * : 괄호가 없으면 스택에 있는 '*' 모두 pop, 괄호있으면 ..

SWEA 2021.03.03

4881. [파이썬 S/W 문제해결 기본] 5일차 - 배열 최소 합

🚛 파이썬 SW문제해결 기본 - Stack2 NxN 배열에서 세로당 하나의 숫자를 선택해 모두 더했을 때 최소의 합을 구하는 문제입니다. 같은 세로열에서 2개의 숫자를 선택할 수는 없습니다. 💡 아이디어 순열과 조합 문제, DFS를 구현하여 풀고 계산량을 줄이기 위해 가지치기 사용합니다. 가지치기를 하지 않으면 계산량초과로 오류가 발생하기 때문에 유의하여야 합니다. 한 세로열 당 방문함을 체크하고 다음 열로 넘어가는 코드를 신경써서 배치하였습니다. 백트래킹을 사용하여 좀 더 효율적인 코드를 완성하였습니다. 🎲 파이썬 코드 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. # TODO Learn 4881 배열최소합. def per(k, midV): # 최솟값 가져오기. global m..

SWEA 2021.03.03

4880. [파이썬 S/W 문제해결 기본] 5일차 - 토너먼트 카드게임

🚛 파이썬 SW문제해결 기본 - Stack2 가위바위보할 상대를 구할 때 주어진 카드 순서를 절반씩 나누어 토너먼트 형태로 시합 대진을 구성하는 문제입니다. 최종적으로 상대가 나눠지게 되면 가위바위보를 진행하고 최종적으로 승자를 가려내어 출력합니다. 💡 아이디어 반복되는 작업을 함수와 재귀를 활용해서 해결합니다. 범위를 둘로 나눌때 구간을 잘 나누어 주어야 겹치는 부분이 발생하지 않습니다. 🎲 파이썬 코드 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. # TODO 4880 토너먼트 가위바위보 def game(i, j): # 종료조건..점점 줄어들기 때문에 자신과 같아지면 i 출력 if i == j: return i # 게임을 시키는 범위. # 범위를 둘로 나눠서 재귀를 돌림.. ..

SWEA 2021.03.03

4875. [파이썬 S/W 문제해결 기본] 5일차 - 미로 코드분석

🚛 파이썬 SW문제해결 기본 - Stack2 델타값과 스택을 활용해서 상하좌우 4방향을 체크하는 문제입니다. 델타값을 이용해서 4방향을 체크할때에 배열의 범위를 벗어나지 않도록 체크하는 것이 중요합니다. 💡 아이디어 DFS 알고리즘을 기반으로 미로의 시작점에서 부터 4방향을 체크해가며 목적지를 찾아나가는 방식으로 코드를 구성했습니다. Stack에는 이동가능한 곳들을 담아주고 방문한 곳은 기본 배열에서 0으로 초기화 되어있던 것을 1로 바꾸어줍니다. 계속해서 이동하며 목적지인 3에 도착하면 break하여 반복문을 빠져나옵니다. 🎲 파이썬 코드 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. """ - 문제 미로 : 2(출발), 3(도착), 0(통로), 1(벽) 도착할 수 있으면 1 ..

SWEA 2021.03.03
728x90
728x90