본문 바로가기

전체 글

(82)
[DP] boj 9095, 9461 - 간단한 점화식 백준 9095, 9461는 점화식으로 해결할 수 있다. 9095 방법 1 간단한 점화식 import sys t = int(sys.stdin.readline()) # 테스트 케이스 개수 dp = {1:1, 2:2, 3:4} for i in range(4, 11): dp[i] = dp[i-1] + dp[i-2] + dp[i-3] for i in range(t): print(dp[int(sys.stdin.readline())]) 방법 2 접근법을 모르면 이렇게라도 푼다의 예시 import sys def calc(lst): # 중간과정값들을 list 받아 가능한 다음 중간과정값들을 list로 반환 global count temp_lst = [] for n in lst: if n == 0: count += 1 #..
[DP] boj 1463 - 1로 만들기 백준 1463은 경우의 수를 다 넣거나 재귀로 해결할 수 있다. deque를 쓰는 방법도 봤는데 아직 익히지 않았다. 방법 1 재귀. 속도 빠름. 참고 링크 import sys n = int(sys.stdin.readline()) dp = {1:0} def cntCalc(num): if num in dp: # dp에 있는 key인지 확인 return dp[num] else: # num보다 작은 key의 값이 필요하니 재귀 if num % 2 == 0 and num % 3 == 0: dp[num] = min(cntCalc(num // 2) + 1, cntCalc(num // 3) + 1) elif num % 2 == 0: dp[num] = min(cntCalc(num - 1) + 1, cntCalc(num..
[입출력] boj 11718, 11719 - EOF 판단 백준 11718, 11719는 간단한 문제지만 설명하자면 어렵다. 언어에 대한 이해가 부족해서 그런 것 같다. 출제 의도 사이트에서 주는 FAQ 내용을 가져오자면 아래와 같다. 이 문제의 목적은 문자열을 올바르게 입력받고 파일의 끝(EOF)을 올바르게 판단하는 법을 연습하는 것입니다. 총 몇 줄이 주어진다 등의 정보는 절대 입력으로 주지 않습니다. 또한 단순히 키보드로 입력 내용만 적고 프로그램이 종료되지 않은 상태까지만 봐서는 EOF를 제대로 처리했는지 알 수 없습니다. 더 이상 읽을 게 없을 때 프로그램을 종료하는 법을 알아야 합니다. 그 방법은 언어마다 다르고 사용하는 함수마다 다르니 검색해서 그 방법을 알아보세요. 주로 파일 입출력으로 설명되어 있겠지만, 입력 스트림도 파일 입력이기 때문에 결국 ..
Python - 입력값 받기 코딩테스트 환경에 다시 익숙해지고자 기본 입출력 문제를 반복했다. [입출력] boj 11718, 11719 - EOF 판단 array vs list 파이썬에서는 리스트가 곧 배열이다. input()은 한 줄을 str 형태로 받는다. 줄바꿈이 포함된 입력을 넣어도 첫 줄만 받아감. 코테에서는 시간 단축을 위해 input 대신 sys.stdin.readline을 많이 쓴다. 줄바꿈까지 받기 때문에 strip이나 map split으로 제거하고 사용함. import sys sys.stdin.readline() sys.stdin.readline으로 여러줄 입력 받기 import sys num = int(input()) arr = [sys.stdin.readline() for i in range(num)] prin..
JS - callback, promise JS 강의 필기 + 추가 JS is synchronous. Execute the code block by order after hoisting callback function을 중첩하면 가독성이 떨어지고 유지 보수가 용이하지 않음 console.log('1'); setTimeout(() => { console.log(2); }, 1000); // 1초 뒤 콜백함수 실행 console.log('3'); // 1 3 2 순으로 출력됨 synchronous callback function printImmediately(sentence){ sentence(); } // 이 부분은 hoisting 됨 printImmediately(() => console.log('hello')); asynchronous call..