본문 바로가기

분류 전체보기

(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..