본문 바로가기

CodingTest

(238)
[ BOJ / 파이썬 ] 10773 제로 / 제출1 / 그냥 스택을 구현하기만 하면 되는 문제라서 간단하게 풀었습니다. import sys from collections import deque input = sys.stdin.readline k = int(input()) stack = [] for i in range(k): n = int(input()) if n != 0: stack.append(n) else: stack.pop() print(sum(stack))
[ BOJ / 파이썬 ] 1158 요세푸스 문제 / 제출 1 / import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) nums = deque([i for i in range(1, n + 1)]) turn = k - 1 yosepus = [] while nums: if turn > 0: nums.append(nums.popleft()) turn -= 1 continue yosepus.append(nums.popleft()) turn = k - 1 print("") 시간 제한이 너무 적어서 혹시 시간 초과나는 풀이일 수 있어 불안해하면서 제출했는데 다행히도 무사히 넘어갔다. 왜냐하면 전체 숫자 배열을 원하는 결과를 얻을 때까지 정..
[ BOJ / 파이썬 ] 1406 에디터 바로 이 전 글인 https://proprotrainee.tistory.com/156?category=1104458 [ BOJ / 파이썬 ] 5397 키로거 커서 움직이는 것에 대한 조작 문제이다. 쉬워보여서 덤볐다가 못 풀었다. 진짜 쓰렸는데, 다른 분들 풀이 보니까 접근법이 어느정도 유형화되어 있는 것 같고, 도저히 혼자서는 못 풀었을 것 같 proprotrainee.tistory.com 이 글의 문제와 비슷한 유형인 것 같아 바로 풀어봤다. 위의 문제는 스스로 풀어내지 못했다. 정말 약간 벅찬다.. 이게 바로 양치기의 승리를 암시하는 것 같아서 설레면서도 두려워졌다. 평소 같았으면 풀지 못 했을 것 같은 문제인데, 비슷한 유형을 풀고 와보니 어떻게 해야할 지 감이 잡혔다. 기분 너무 좋다.. 더 풀..
[ BOJ / 파이썬 ] 5397 키로거 커서 움직이는 것에 대한 조작 문제이다. 쉬워보여서 덤볐다가 못 풀었다. 진짜 쓰렸는데, 다른 분들 풀이 보니까 접근법이 어느정도 유형화되어 있는 것 같고, 도저히 혼자서는 못 풀었을 것 같은 느낌이라 잘 후퇴했다 싶었다. 비슷한 문제도 있는 것 같으니 다음에 비슷한 방식으로 출제되었을 때 풀어내기만 하면 된다. https://tturbo0824.tistory.com/23 백준 파이썬 5397번: 키로거 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 tturbo0824.tistory.com 이 분이 친절하게 유사 유형..
[ BOJ / 파이썬 ] 3273 두 수의 합 / 제출 1 / 처음에 인풋 값 저렇게 큰 줄 모르고 n^2으로 해서 시간 초과 import sys input = sys.stdin.readline n = int(input()) nums = list(map(int, input().split())) x = int(input()) sub_nums = list(map(lambda i: abs(i-x), nums)) count = 0 for sub_num in sub_nums: if sub_num in nums: count += 1 print(count//2) / 제출 2 / https://baby-ohgu.tistory.com/12 [백준 3273] 두 수의 합 (Python) www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개..
[ BOJ / 파이썬 ] 1475 방 번호 / 제출 1 / import sys import math n = input() nums = [0 for i in range(10)] for i in range(10): nums[i] = n.count(str(i)) yookgoo = math.ceil((nums[6] + nums[9]) / 2) nums[6] , nums[9] = yookgoo, yookgoo print(max(nums)) 맞기는 했는데 코드가 안 예쁜 느낌.. 저 6과 9를 채우는 문법이 마음에 들지 않는다. / 다른 분들 코드 / ans = [0] * 10 for i in range(len(word)): num = int(word[i]) if num == 6 or num == 9: if ans[6]
[ BOJ / 파이썬 ] 2577 숫자의 개수 / 제출 1 / import sys num = 1 for i in range(3): num *= int(input()) intNumList = [0 for _ in range(10)] for n in str(num): intNumList[int(n)] += 1 for n in intNumList: print(n) / 남의 코드 / a = int(input()) b = int(input()) c = int(input()) m = str(a*b*c) for i in range(10): print(m.count(str(i))) : 음 가만 보면 나는 count()함수를 쓸 생각 거의 안 한다. 보통. 잘 안 익는 함수인데 다른 사람들은 많이 이용한다.
[ BOJ / 파이썬 ] 1012 유기농 배추 / 첫 번째 제출 / import sys from collections import deque input = sys.stdin.readline T = int(input()) dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] for t in range(T): # 초기화 ## 가로, 세로, 배추 개수 m, n, k = map(int, input().split()) farm = [[0] * m for _ in range(n)] visited = [[False] * m for _ in range(n)] q = deque([]) cabbageq = deque([]) for i in range(k): y, x = map(int, input().split()) farm[x][y] = 1 worm =..
[ BOJ / 파이썬 ] 1912 연속합 으 .. 아직 DP연습량이 안 쌓인건 알았지만, 이렇게 DP아이디어가 아예 안 떠오를 줄은 몰랐다. 심지어 1시간 지나고 포기한 이제야 아 이게 DP문제라서 풀려고 선택한 문제지.. 라고 풀이유형이 이제 생각난다. 진작에 생각 났어도 몰랐겠지만.. ㅎ 계속 경험치 쌓자. 1차 아이디어. 쭉 가다가 감소 나오면 일단 끊는다. 그리고 이전에 끊긴 양수값과 비교해 큰 값을 남겨놓는다. => 문제 로직에 안 맞음. 2차 아이디어. 나름 참신하게 한다고 했는데 그냥 1차 아이디어를 뒤에서부터 접근하는 식이 되었다. 각 값에 이어지는 최댓값을 따로 테이블에 적어줄 뿐이었다. 메모제이션스럽게 한다고 흉내낸 생각인데 스스로 반례 발견해서 포기. 애초에 잘못된 접근인걸지도. 3차 아이디어. 일단 전체 데이터 쭉 훑으면서..
[ BOJ / 파이썬 ] 11659 구간 합 구하기 4 아 나는 확실히 PS를 잘 못 풀고 있었던 것일까? 아니면 시간을 들였기 때문에 이제야 문제 푸는 느낌나게 푸는건가? 이제야 뭔가 로직이 로직답게 만들어지는 것 같다. 0) 문제 정의 n개의 문자 배열 중에 i , j 받았을 때 i~j 범위의 문자 배열 값들의 합 1) DP테이블 정의 dp[n]은 n까지의 num들의 합 dp[j] = dp[j-1] + num[j] 2) 점화식 구하기 보통 순차적인 합이 있을 때, 특히 DP테이블의 누적 합이므로 dp [j] ~ dp[i] = dp[j] - dp[i-1] 3) 초기값 dp[0] = 0으로 해주고, num에 따라서 합을 누적해서 넣어서 dp테이블 채우기. / 첫 번째 제출 / import sys input = sys.stdin.readline n, m = m..