본문 바로가기

전체 글

(276)
럭키 스트레이트 문제 항상 짝수자릿수에 대해서 반으로 나눠서 왼쪽의 합과 오른쪽의 합이 같으면 "Lucky", 아니면 "Ready" 출력하라. 유형 요구한 것을 그대로 구현하면 되는 문제이다. 코드 def solution(input): result1 = 0 result2 = 0 mid_index = int(len(input)/2)-1 for i in range(len(input)): if i
게임 개발 유형 구현-시뮬레이션 코드 array = [ [1, 1, 1, 1, 1], [1, 0, 0, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1] ] start_dir = 0 start_x = 1 start_y = 1 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] count = 0 result = 1 while(1): array[start_x][start_y] = 1 left = start_dir-1 if left < 0: left = 3 pos_x = start_x + dx[left] pos_y = start_y + dy[left] if 0
왕실의 나이트 유형 일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 '구현-시뮬레이션' 알고리즘 코드 pos = "a1" column = int(ord(pos[0]) - int(ord('a'))) + 1 row = int(pos[1]) # Solution1 a = [-2, 2] b = [-1, 1] count = 0 for i in range(2): for j in range(2): x_pos = column + a[i] y_pos = row + b[j] if 1
시각 문제 정수 N에 대하여 00시00분00초부터 N시59분59초까지 모든 시각에 3을 포함하는 경우의 수 유형파악 가능한 모든 경우의 수를 탐색 -> (Implementaion - 완전탐색) 코드 # 완전탐색으로 해결해도 됨. for i in range(n+1): for j in range(60): for k in range(60): if '3' in str(i) + str(j) + str(k): count += 1 n = 1 count = 0 for i in range(0, n): if '3' in str(i): count += 1 print((15*60+45*15)*(n-count+1)+3600*count) 완전탐색으로 구현시 시간복잡도 O(N) 최대 24*60*60
상하좌우 문제 N행 N열에서 (1, 1)부터 시작해 조건에 따라 움직일 때, 결과는? 조건 : L or R or U or D 유형 일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 '구현-시뮬레이션' 알고리즘 n = 5 start = [1, 1] direction = ['R', 'R', 'R', 'U', 'D', 'D'] dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] dtype = ['U', 'L', 'D', 'R'] for i in direction: for j in range(4): if i == dtype[j]: x_pos = start[0] + dx[j] y_pos = start[1] + dy[j] if 1
Implementation - Concept 해당 문제는 "이것이 코딩 테스트이다" 책을 참고하여 제작하였습니다. 구현 "풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제" 구현 하기 어려운 문제 유형 - "알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제" - "특정 소수점 자리까지 출력해야하는 문제" - "문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야하는 문제" -> 사소한 조건 설정이 많은 문제 -> "문제 길이가 길다" 유형 완전 탐색 : 모든 경우의 수를 주저없이 다 계산하는 해결 방법 -> 가능한 모든 경우의 수를 모두 검사해보는 방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 -> 일련의 명령에 따라서 개체를 이동시킨다. (+) 파이썬에서의 메모리 사용량 리스트의 길이(in..
볼링공 고르기 문제 N개의 볼링공을 같은 무게라도 번호가 다르면 서로 다른 공으로 간주할 때, 두 사람이 서로 다른 무게의 볼링공을 고를 수 있는 모든 경우의 수를 구하라. 아이디어 1. for, for 해서 모든 순열을 구한다. 2. 조합 - 같은 번호를 가진 볼링공 수 3. 기록을 통한 체크 입력 (1, 3, 2, 3, 2) - 출력 8 번호 : (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 5), (3, 4), (4, 5) 무게 : (1, 3), (1, 2), (1, 3), (1, 2), (3, 2), (3, 2), (2, 3), (3, 2) - 볼링공의 조합을 생각해보면 결과적으로는 번호가 다르고 무게가 달라야한다. - 1. 번호를 고려해서 생각해보면 for 문 이외에는 생각이 ..
Spring - Interceptor Interceptor - DispatcherServlet과 Controller 사이에서 Client의 요청을 가로채서 특정 작업을 수행 후 Controller에게 전달하는 역할 - Spring Boot에서는 HandlerInterceptor로 구현 HandlerInterceptor를 추가한 Spring의 기본 동작 구조는 다음과 같다. Client(Request) -> WAS(HttpServletRequest, HttpServletResponse 생성)-> Filter(Encoding등 처리) -> DispatcherServlet -> HandlerMapping(Controller Mapping) -> Dispatcher Servlet -> HandlerInterceptor -> Handler(Contr..