
트리 순회 코드 (파이썬)
2022. 8. 28. 15:19
알고리즘 개념
def inorder(v): if v == 0: return # 전위순회 inorder(L[v]) # 중위순회 inorder(R[v]) # 후위순회

백준 10157 자리배정 (파이썬)
2022. 8. 28. 15:10
백준
아이디어 달팽이라는 문제를 풀었다면, 간단하게 풀 수 있을 것이다. 기준점을 잡는다. 행은 마지막 행, 열은 첫 번째 열 K번을 채울 때 까지 상, 우, 하, 좌 순으로 숫자를 채워나간다. 그 행, 열 위치를 참고하여 출력하는데, 열은 그냥 열+1이고, 행은 처음 받은 행의 수에서 그 자리의 인덱스 행 번호를 빼주면 된다. 풀이 R, C = map(int, input().split()) arr = [[0]*R for _ in range(C)] K = int(input()) if K > R*C: print(0) exit() dr = [-1, 0, 1, 0] dc = [0, 1, 0, -1] r = C -1 c = 0 arr[r][c] = 1 cnt = 0 k = 0 while arr[r][c] != K: ..

백준 1244 스위치 켜고 끄기 (파이썬, 자바)
2022. 8. 28. 15:05
백준
아이디어 남자인 경우는 간단하게 for문을 배수만큼 돌려준다. 여자인 경우, 팰린드롬을 찾아 스위치를 켜고 끈다. 풀이 및 해설(주석) (파이썬) N = int(input()) arr = list(map(int, input().split())) P = int(input()) for i in range(P): s, n = map(int, input().split()) if s == 1: # 남자일때 for j in range(n-1, N, n): # 수의 배수 만큼 인덱스 순회 if arr[j] == 1: arr[j] = 0 else: arr[j] = 1 elif s == 2: # 여자일때 l, r = n-2, n # l, r 을 투 포인터 개념으로 잡아줌 while True: if l ..

SWEA 1220 Magnetic (파이썬)
2022. 8. 25. 22:30
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아이디어 1은 밑으로 내려가고, 2는 위로 올라온다. 교착상태인 자석 형태(1, 2가 붙은 상황)의 개수를 세야 한다. 현재 상태를 알려주는 flag라는 변수를 만든다. flag는 교착상태를 알려주는 변수로 사용되며 교착 자석의 수(출력 값)를 더해주는 정보를 준다. 열 우선 순회로 0, 2를 먼저 만나면 무시하고 1을 만나면 flag를 1로 변경한다. (초기 flag == 0) flag가 1인 상..

SWEA 11315 오목 판정 (파이썬)
2022. 8. 25. 19:38
SWEA
https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYHwPox6g0YDFAV6&contestProbId=AXaSUPYqPYMDFASQ&probBoxId=AYLD5RGq4GUDFASv&type=PROBLEM&problemBoxTitle=IM_%EB%8C%80%EB%B9%84&problemBoxCnt=10 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아이디어 2차원 리스트를 탐색해야한다. 델타를 사용한다. (단, 반경 체크는 필수로 해준다.) 시간 제한에 영향 받지 않으므로 그냥 모든 지점을 델타의 기준 점으로 잡는다. 모..

백준 2578 빙고 (파이썬)
2022. 8. 23. 22:29
백준
https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 풀이 bingo = [list(map(int, input().split())) for _ in range(5)] nums = list(map(int, input().split())) for _ in range(4): nums += list(map(int, input().split())) dr = [1, 1] dc = [1, -1] def func(): count = 0 for num in nums: for i ..

백준 2635 수 이어가기 (파이썬)
2022. 8. 23. 20:12
백준
https://www.acmicpc.net/problem/2635 [2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net](https://www.acmicpc.net/problem/2635) 풀이 및 해석 N = int(input()) result = [] for i in range(1, N+1): # 양의 정수 1부터 N을 포함하는 정수 들 (!!N포함 중요 안할 시 틀림) tmp = [N, i] while True: val = tmp[-2] - tmp[-1] # 다음 값은 인덱스 -2에서 -1을 뺀 값 if val >= 0: # 이 값이 정수라면 넣어주고 tmp.append(val) else: # 아니면 break bre..

SWEA 1224 계산기3 후위표기법 (파이썬)
2022. 8. 23. 19:16
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14tDX6AFgCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 및 해석(주석) def isp(s): if s == '*' or s == '/': return 2 elif s == '(': return 0 else: return 1 def icp(s): if s == '*' or s == '/': return 2 elif s == '(': return 3 else: return 1 def cal_1(lst): # 후위 표기식으로 변환하는 함수 stack =..