전체 글 172

[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

DFS(Depth First Search) 깊이 우선 탐색 - python

DFS(Depth First Search) 깊이 우선 탐색 그래프로 표현된 모든 자료를 빠짐없이 탐색하는 알고리즘 stack과 재귀를 이용하여 구현 DFS 진행 과정 1. 시작 정점 v를 결정하여 방문 2. 정점 v에 인접한 정점 중에서 ( 1 ) 방문하지 않은 정점 w가 있으면, 정점 v를 스택에 push -> 정점 w에 방문 v = w로 바꾸고 다시 반복 ( 2 ) 방문하지 않은 정점이 X -> 탐색의 방향을 바꾸기 위해 스택을 pop -> 가장 마지막에 방문한 정점을 다시 v로 바꾸고 반복 v = stack.pop() 3. 스택이 공백이 될 때까지 2를 반복 DFS 예시 좌표 A B C D E F G visited F F F F F F F stack 1. A 출발 좌표 A B C D E F G vi..

알고리즘 2023.02.14

DP(Dynamic Programing) 다이나믹 프로그래밍

DP(Dynamic Programing) 다이나믹 프로그래밍 문제를 각각 작은 문제로 나누어 해결한 후, 그 해를 이용해 큰 크기의 문제들을 해결하여 최종적으로 원래 주어진 입력의 문제를 해결하는 방법 간단히 -> 작은거 부터 해결하고, 그 결과를 이용해 큰거 + 결과까지 다 해결한다 1. Bottom-Up ( 상향식 ) : 더 작은 하위 문제부터 살펴본 다음, 작은 문제의 정답을 이용해 큰 문제의 정답을 품. -> 데이터를 테이블 형태로 만들면서 문제를 풀기 때문에 Tabulation이라고 부름 n = int(input()) dp = [0]*(n + 1) def fibo(n): dp[0] = 0 dp[1] = 1 for i in range(2, n + 1): dp[i] = dp[i - 1] + dp[i..

알고리즘 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

[SWEA] 1979 어디에 단어가 들어갈 수 있을까 - python

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 가로부터 1이 있으면 cnt를 증가시킨다. 2. 한줄을 다 돌았을 때, cnt가 K와 일치하면 ans 를 증가시킨다. -> 한줄을 다돌면 cnt 초기화 3. 전치행렬을 만들어서 세로도 똑같이 진행하면 끝 가로 / 세로 두번을 똑같은 코드를 반복하는 것이기 때문에 함수를 만들어서 2번 쓰는 것이 코드를 줄이는 방법 T = int(input()) for test_case in range(1, T+1): N, K = map(int,input().split()) arr= [list(map(int,input().split())) for..

SWEA 2023.02.13

[백준] 9935 문자열 폭발 - python

9935번: 문자열 폭발 (acmicpc.net) 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 우리 조원이 강력추천한 문제다. stack + 노가다로 풀었다 교수님이 푼 코드 보니까 훨 짧던데, 난 아직 모자르니까 ! 그래도 풀어서 뿌듯 ~ stack = [] txt = list(input()) txt_s = list(input()) h = len(txt_s) for i in range(len(txt)): # txt_s의 길이보다 stack이 작으면 계속 쌓기 if len(stack) < h..

월평 95점맞고 과목평가 패스 못한 사람이 있다?

그게나야 ~~~~~~~~~~~~~~~~~ 싸피 1달 후기 파이썬때가 행복한거였다 알고리즘 하니까 너무 힘들다 대상포진 걸려서 손목 난리난리난리 과목평가 패스도 못함 그래도 오늘 시험은 괜찮게 본거 같아서 ~.. 정신없이 살다가 이제 조금 여유가 생긴 것 같다 나으 ㅣ 이번주 할일 1. 밀린 CS50 강의 보기 2. 한화시스템 쓰기 3. 토욜에 현대오토에버 코테보기 4. 시간이난다면 . . 밀린 블로그 쓰기 ~.. 내 인생 화이팅

공부일지 2023.02.13

[백준] 2493 탑 - python

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 골드인데 할만해보여서 덤볐다가 교수님과 2시간 잡고 있었다. 무지랭이를 도와주시려고 계속 옆에서 알려주신 교수님께 이영광을 내가(교수님의도움을받아^^) 푼 코드 num = int(input()) li = list(map(int,input().split())) temp = [] ans =[] for j in range(len(li)): # 첫번째 숫자는 무조건 0 flag = True for i ..