Python
[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
[python] 백준 - 14719. 빗물
🤔문제 해결 G5 | 구현, 시뮬레이션 며칠 전 nhn 코테 문제랑 비슷한 문제. 그 때는 자바로 풀었기도 하고, 더 복잡하게 푼거같다. 딱히 어려운 기술을 요구하는 문제는 아니다. 오른쪽으로 가면서 자신보다 높거나 같은 블럭을 찾는다. 가는 중에 자신보다 낮지만가장 큰 놈을 찜해 놓는다. 위의 과정이 끝나면 양쪽의 블럭중 낮은 블럭 만큼의 빗물을 사이의 블럭에 채운다. 💻소스 코드 def find_block(x: int) -> int: # 오른쪽으로 가면서 자신보다 크거나 같은 블럭을 찾는다. # 가는 중에 자신보다 작지만 그 중에 가장 큰 놈을 찜해 놓는다. max_block = [0, 0] for j in range(x + 1, W): if block[j] >= block[x]: return j i..
[python] 백준 - 1325. 효율적인 해킹
🤔문제 해결 S2 | 그래프, BFS(DFS) 단순한 그래프 문제였는데 전부다 시간초과 발생.... 다른 분들 제출한것도 보니까 대부분 시간초과이다. (그래서 pypy3로 제출하니 성공) 풀이방법은 인접리스트 생성 (이 문제에서는 a->b가 아니라 b->a 이다) 모든 노드에 대해서 BFS를 돌린다. 그 때 몇개의 노드를 돌았는지 숫자를 세준다. 가장 높은 카운트의 노드들을 출력한다. 다른 분들의 풀이를 봤는데 풀이가 나랑똑같다. 하지만 어떻게 통과했는지... 💻소스 코드 import sys from collections import defaultdict from collections import deque def bfs(start): q = deque([start]) visited = [0] * (N ..
[python] 프로그래머스 - 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1)
🤔문제 해결 압축문제 백준에서도 비슷한 문제를 풀어본적이 있다. 리스트를 실제로 자르지 말고 나뉘는 인덱스만 구해서 해결하는게 좋다. 인덱스를 구할 때는 네모의 시작점의 위치만 구한다. 거기에 + 네모의 길이만큼 해주면 네모를 완성시킴 시작점을 기준으로 하면 위의 경우는 0, 0 그리고 크기는 8이다. 다음 4가지는 0, 0, 4 0, 4, 4 4, 0, 4 4, 4, 4 다음 네모는 크기를 절반으로 나누고 x에 더하거나 y에 더하거나 x와 y 둘다 더해서 시작값을 만든다. 다음은 이 네모가 모두 같은 숫자인지 판별하는 것인데 네모중 하나의 값을 초기값으로 잡고 네모안의 값을 하나씩 비교해가면서 초기값과 다른게 하나라도 있으면 압축할 수 없으므로 또 그 네모를 잘라준다! 💻소스 코드 def solutio..
[python] 백준 - 5430. AC
🤔문제 해결 S2 | 자료구조, 데크, 구현 리버스와 제거 두가지 오더가 있다. 리버스를 하게 되면 O(N)의 시간복잡도 발생 그러므로 리버스를 하지말고 이게 뒤집힌 상황인지 아닌지만 구분해준다. 그 후 그대로이면 맨 앞의 숫자를 제거하고 뒤집힌 상황이면 맨 뒤의 숫자를 제거한다. 💻소스 코드 from collections import deque for tc in range(int(input())): # RR이면 원래상태이므로 제거해줌 order = input().replace('RR', '') n = int(input()) number = input()[1:-1] if number: number = deque(list(map(int, number.split(',')))) # R은 뒤집지 말고 my_re..
[python] 백준 - 2004. 조합 0의 개수
🤔문제 해결 S2 | 수학 진짜 팩토리얼로 구해서 문제를 해결하게 되면 시간초과 발생 끝자리가 0이라는 것은 10의 배수 10은 2와 5로 구성되어 있음 2와 5 짝이 맞아야 10이 되므로 2의 개수와 5의 개수중 더 작은게 10의 개수이다. 💻소스 코드 N, M = map(int, input().split()) # 진짜 팩토리얼로 구해서 문제를 해결하게 되면 시간초과 발생 # 끝자리가 0이라는 것은 10의 배수 # 10은 2와 5로 구성되어 있음 # 2와 5 짝이 맞아야 10이 되므로 2의 개수와 5의 개수중 더 작은게 10의 개수이다. def count_number(n, k): count = 0 while n: n //= k count += n return count five_count = count..