본문 바로가기

CodingTest

(238)
[ BOJ / 파이썬 ] 1629. 곱셈 간단한 재귀 문제인데, 수학적 개념이 약해 감을 잡기 어려웠다. 나머지에 대한 원리를 이해한 뒤 재귀적으로 코드를 풀어내는 것 자체는 비교적 수월하게 작성했다. 예시의 10, 11, 12 input에 대하여 10^11 % 12 = ?? 10^1 * (10^5 % 12)^2 = 10^1 * (10^1 * (10^2 % 12)^2) = 10^1 * (10^1 * (10 % 12)^2)^2) =.. 요렇게 쪼개 나갔다. 제출 1. 실패 -> 시간초과. getMod를 두 번 부르게 되며 매 연산마다 반으로 나눠 logN으로 나누는 이득을 전혀 못 보게 했다. 그래서 시간초과 남.. def getMod(a, b, c): if b == 1: return a % c return a**(b%2) * getMod(a, ..
[ BOJ / 파이썬 ] 7576 토마토 BFS & 시작점이 여러 개인 경우 deque를 사용하고, 각 토마토에 해당 날짜를 붙여서 같이 묶어줬다. 1차 제출 . 통과 import sys input = sys.stdin.readline from collections import deque def is_all_ripped(board): for i in range(len(board)): for j in range(len(board[0])): if board[i][j] == 0: return False return True def main(): m, n = map(int, input().split()) board = [] tomato = deque([]) for i in range(n): row = list(map(int, input().split(..
[ BOJ / 파이썬 ] 2178.미로 탐색 BFS BFS문제 중 거리 측정 유형이다. BFS문제의 가장 전형적인 유형이기도 하고, 개인적으로 주구장창 풀었던 스타일이라 술술 써내려갔다. 문제 ( 링크 ) 기본적인 BFS는 방문 여부를 담을 배열을 따로 두지만, 해당 문제에서 밟아야할 공간이 1이므로 1 이상인 경우는 방문했다고 여기며 그 자리에 현재까지의 최단거리를 바로 대체해 넣는 방식으로 코드를 작성했다. 제출 1. 통과 import sys input = sys.stdin.readline from collections import deque def main(): n, m = map(int, input().split()) board = [list(map(int, list(input().strip()))) for _ in range(n)] dx ..
[ BOJ / 파이썬 ] 1926. 그림 과거에 풀었던 문제. ( 링크 ) 6개월만에 푸니 확실히 속도나 이해도가 좋긴 하다. 제출 1. 통과 import sys input = sys.stdin.readline from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def getArea(a, b, board): area = 1 q = deque([(a, b)]) board[a][b] = 2 n = len(board) m = len(board[0]) while q: x, y = deque.popleft(q) for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
[ BOJ / 파이썬 ] 4949.균형잡힌 세상 1차 풀이 . 실패 import sys input = sys.stdin.readline def checkIsCorrect(text): stack = [] pair = {']':'[', ')':'(' } for t in text: if t == '[' or t =='(': stack.append(t) if t == ']' or t == ')': if not stack: return False if stack and stack[-1] != pair[t]: return False if stack and stack[-1] == pair[t]: stack.pop() if stack: return False else: return True def main(): text = '' while text != '.': t..
[ BOJ / 파이썬 ] 10828 스택 간만에 푸니까 파이썬 입출력 시간초과 제한에 대해서 까먹었다. 풀이는 맞았는데 시간초과가 나서 혹시나 했더니 역시나였다. import sys input = sys.stdin.readline def main(): n = int(input()) stack = [] for _ in range(n): oper = input().strip() #push X: 정수 X를 스택에 넣는 연산이다. if len(oper) > 3 and oper[:4] == 'push': oper, x = oper.split(' ') x = int(x) stack.append(x) #pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. if oper == 'pop..
[ 백준 ] 1406 에디터 보호되어 있는 글입니다.
[ SW Expert Academy ] 1214. 거듭제곱 실전에서 만나지 않을 기본 문제.. 1차 제출. PASS 풀이소요시간 4분 def recur(n, m, x): if x == m: return n return recur(n, m, x+1) *n for _ in range(1, 11): tc = int(input()) n, m = map(int, input().split()) result = recur(n, m, 1) print("#{} {}".format(tc, result)) 사실 이렇게 초기값을 1로 두는게 더 정확한 풀이이다. for _ in range(10): case = int(input()) N, M = map(int, input().split()) def power(N, M): if M == 0: return 1 else: return N ..
[ SW Expert Academy ] 1213. String 이 문제랑 1493 문제랑 같은 레벨이 맞다니.. 이게 뭐냐 진짜.. 눈물 난다 .. 😭 for _ in range(1, 11): tc = input() query = input() target = input() result = target.count(query) print("#{} {}".format(tc, result))
[ SW Expert Academy ] 1860. 진기의 최고급 붕어빵 굽기 보호되어 있는 글입니다.