Algorithm Problem
![[python] 백준 - 3190. 뱀 (삼성 SW 역량 테스트 기출 문제)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVGCJj%2FbtqMOxwIvmp%2FjAeLBI6BY3qM13jQxiep81%2Fimg.jpg)
[python] 백준 - 3190. 뱀 (삼성 SW 역량 테스트 기출 문제)
🤔문제 해결 G5 | deque, 시뮬레이션 deque 를 이용하여 뱀을 만든다. deque의 앞쪽은 꼬리, deque의 뒷쪽은 머리 (반대로 해도 상관없음) 머리를 방향에 따라 한칸 늘린다.(deque에 머리 추가: append()) 벽에 부딪히지 않고, 뱀의 몸통에 부딪히지 않으면 통과 이 때 머리의 위치에 사과가 있으면 통과 없으면 꼬리를 줄인다.( deque에서 꼬리를 제거: popleft()) 매초 세주면서 해당 초에 오더가 있으면 ( 방향 바꾸기 ) 진행 방향을 바꿔준다. 주의: 사과를 먹으면 맵에서 사과 지우기 💻소스 코드 from sys import stdin from collections import deque input = stdin.readline def move_snake(direc..
![[python] 백준 - 1655. 가운데를 말해요](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuLMxx%2FbtqMvKiWzvH%2F1fwSRT7QJFsVKv86M2Jt10%2Fimg.png)
[python] 백준 - 1655. 가운데를 말해요
🤔문제 해결 G2 | 우선순위 큐 처음에는 가볍게 정렬로 풀었지만, 시간초과가 발생했다. ( 바이너리서치는 통과 된다고 함 ) 가운데 값 구하기를 열심히 찾아봤지만 없었다. 어쩔 수 없다. 이 문제의 의도는 우선순위 큐를 활용하는 것이다. 파이썬의 힙큐 모듈을 사용하면 되는데, 최소힙 기준으로 되어있다. 최소힙은 가장 작은 원소가 루트에 위치하는 것이다. 우리는 가운데 값을 찾아야 하기 때문에 힙을 두개 만들어서 왼쪽의 가장 큰 수와 오른쪽의 가장 작은 수를 비교하여 가운데 값을 구할 것이다. 이렇게 두 부분으로 나누면 가운데 값을 구 할 수 있다. 하지만!!!!!!!!!!! 최소힙으로 힙큐 모듈이 구성되어 있으므로, 왼쪽의 구성은 음수를 붙여서 거꾸로 만들어야한다. 이렇게 하면 왼쪽의 0번과 오른쪽의 ..
![[python] 백준 - 1747. 소수&팰린드롬](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FewcRiA%2FbtqMht4rwDG%2Fff0oCjcyJa9hzKkkqR8CS0%2Fimg.png)
[python] 백준 - 1747. 소수&팰린드롬
🤔문제 해결 G5 | 에라토스테네스의 체, 문자열 소수를 찾고, 그게 소수이면 팰린드롬인지 확인한다. 팰린드롬인지 확인하는 법은 간단하다. 문자를 뒤집어서 같으면 True 브루트포스로 찾아도 문제해결은 가능하지만 에라토스를 쓰는것과 시간이 10배 이상 차이난다. 에라토스테네스의 체를 써서 제한 숫자까지 소수들을 구해놓는다. 그 소수이면서 팰린드롬이면 값을 반환하고 끝 💻소스 코드 def make_eratos(l: int) -> list: eratos = [1] * (l + 1) eratos[0], eratos[1] = 0, 0 for i in range(2, l): if eratos[i]: for j in range(i * 2, l, i): eratos[j] = 0 return eratos def is_..
![[python] 백준 - 16916. 부분 문자열](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL3p8a%2FbtqMhti6qwa%2FGq7pKJMY2YNxW5EpwYXdtK%2Fimg.png)
[python] 백준 - 16916. 부분 문자열
🤔문제 해결 G4 | 문자열, KMP 딱 봐도 너무 쉽지만 G5니까…. 다른 방법으로 풀어야 한다고 생각했다. 들어는 봤어도 한 번도 써본 적 없는 KMP 알고리즘을 써야 문제를 해결할 수 있다. KMP를 쓰면 브루트포스로 문자열 탐색하는 것보다 아주 빠르다. O(M+N) 한 시간 넘게 찾아가면서 공부했지만 설명하기는 너무 어렵다. 이해가 잘 안 된다. 나중에 한 번 더 봐야겠다. 대충 말해보자면 비슷한 패턴을 기억해뒀다가 패턴을 만나면 점프... (무슨 말인지 모르겠다) 어째 됐든 이 알고리즘은 많이 쓰이진 않지만, 적당히 알아만 두면 좋을 거 같다. 💻소스 코드 def kmp_match(txt: str, pat: str) -> int: # 스킵테이블 만들기 def make_skip_table(skip..
![[python] SWEA - 10912. 외로운 문자](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5JnKT%2FbtqPgHYPV5T%2FZdvOSHSlWv8mlXhdGDPkS1%2Fimg.jpg)
[python] SWEA - 10912. 외로운 문자
🤔문제 해결 lv3 | 문자열 💨 붙어있는 문자끼리 삭제하는 것이 아니라, 어디에 있던 두 문자를 찍지으면 된다. 💻소스 코드 for tc in range(int(input())): word = list(input()) word.sort() stack = [] for w in word: if stack and stack[-1] == w: stack.pop() else: stack.append(w) if stack: print(f'#{tc + 1} {"".join(stack)}') else: print(f'#{tc + 1} Good') 📕문제 확인 출처: SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexper..
![[python] SWEA - 10804. 문자열의 거울상](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F39Yju%2FbtqPnbx2TOg%2FX6LHjbBVbjLbRtMCbQFRJK%2Fimg.png)
[python] SWEA - 10804. 문자열의 거울상
🤔문제 해결 lv3 | 문자열 💻소스 코드 for tc in range(int(input())): word = input() answer = '' for i in range(len(word) - 1, -1, -1): if word[i] == 'b': answer += 'd' elif word[i] == 'd': answer += 'b' elif word[i] == 'p': answer += 'q' else: answer += 'p' print(f'#{tc + 1} {answer}') 📕문제 확인 출처: SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com