Computer science

프로그래머스의 레벨 2 문제 기능개발 문제 요구 조건 리스트의 가장 앞에 있는 원소가 100을 넘었을 때, 뒤의 원소가 몇개나 100을 넘겼는지 확인해야 한다. 풀이 방법 리스트의 범위가 작아서 리스트의 모든 원소에 값을 더해주면서 했다. 만약 리스트의 범위가 크다면 총 작업 일수를 저장해서 진도율에 곱해주면 더하는 반복을 없앨 수 있다. # 작업 목록이 빌 때 까지 반복하는데 # 가장 앞에 있는 작업이 며칠 걸리는지 세고, 그만큼 진도율을 더해준다. # 진도율이 100을 넘으면 카운트하고 다음 작업 목록으로 간다 # 안넘으면 그 앞까지 작업 목록을 뺀다. 이걸 반복한다. import math def solution(progresses, speeds): answer = [] while len(progre..
프로그래머스의 레벨 2 문제 의상 문제 요구 조건 의상을 착용하는 조합의 수를 구한다. 풀이 방법 의상 종류별로 몇 개인지 세고, 각 의상을 사용하지 않는 경우를 포함해서 조합을 구한다. 조합에서 아무것도 안 입는 경우 1을 뺀다. # 해시로 옷 종류별로 저장한다 # 각 종류별로 입기+안입기로 곱하고, 아무것도 안입는 경우 1을 뺀다 def solution(clothes): answer = 1 d = {} for _, category in clothes: d[category] = d.get(category, 0) + 1 for category in d: answer *= (d[category] + 1) return answer - 1 해결 못했던 풀이 방법 의상 종류를 가지고 조합을 만들어서 의상 1개 ..
프로그래머스의 레벨 2 문제 전화번호목록 문제 요구 조건 접두어가 리스트에 포함되는지 비교해야한다. 내 풀이 방법 문자열 비교에 걸리는 시간을 단축하기 위해서 해시테이블에 저장하고, 모든 접두어를 만들어서 n*m으로 해결했다. # 모든 가능한 접두어를 해시테이블에 저장하고 비교하면 n*m. 범위가 작아서 가능 def solution(phone_book): d = {phone[:i]: True for phone in phone_book for i in range(1, len(phone))} for phone in phone_book: if d.get(phone, False): return False return True 다른 풀이 방법 문자열을 사전식으로 정렬하면 원소의 뒤에 있는 원소에 포함되는지만 비교..
프로그래머스의 레벨 2 문제 H Index 문제 요구 조건 조건에 맞는 h의 최댓값을 구해야한다. 내 풀이 방법 첫 번째 방법. 범위가 작으므로 완전탐색을 하면 n^2 으로 풀 수 있다. 두 번째 방법. 역순으로 정렬하고, 순회할 때 하나씩 세면서 citation이 h보다 클 때 h를 1씩 증가시키면 h는 h보다 높은 citation의 수가 된다. 따라서 h의 최댓값을 구할 수 있다. # h의 최댓값을 구해야함 # h 값의 범위는 0~1000 # 배열을 정렬하고 0부터 1000까지 조회하면서 가장 큰 h를 찾자 # 6 6 5 5 3 1 0 -> 4 def solution(citations): answer = 0 citations.sort(reverse=True) for i, citation in enum..
프로그래머스의 레벨 2 문제 가장 큰 수 문제 요구 조건 숫자들을 가지고 사전식으로 가장 큰 수가 되도록 만들어야 한다. 내 풀이 방법 숫자의 앞 자릿수가 큰 순서대로 정렬한다. 숫자의 최대 길이가 4이기 때문에 모든 숫자의 길이를 최소 4로 맞춰준다. # 숫자의 앞 자리수가 큰 순서대로 정렬한다 # 문자를 여러번 반복해서 최소 4자릿수로 만들어서 비교한다 # 정렬한 배열의 원소들을 문자열로 만든다 ​ def solution(numbers): l = sorted(map(str, numbers), key=lambda x: x*4, reverse=True) return str(int(''.join(l))) ​ solution([6, 10, 2]) solution([31, 312, 313, 318, 319])..
Stateful, Stateless 특징 Stateful 상태를 유지한다. 로그인 세션 등, 상태를 유지해야 하는 경우에 사용한다. Stateless 상태를 유지하지 않는다. 확장에 유리하다. HTTP API 설계 API URI 설계 규칙 최대한 리소스를 기준으로 설계하자. 리소스(명사)와 해당 리소스를 대상으로 하는 행위(동사)를 분리하자. 행위는 HTTP 메서드로 구분하자. 위의 규칙은 이상적인 설계 규칙이고, 필수적으로 지켜야 하는 것은 아님. GET: 리소스 조회 주로 쿼리 파라미터를 통해 서버로 요청 데이터 전달 주로 조회에 사용한다. GET으로 조회하면 데이터를 캐싱해둬서 조회에 유리함. POST: 요청 데이터 처리, 주로 등록에 사용 메시지 바디를 통해 서버로 요청 데이터 전달 주로 신규 리..
도_유
'Computer science' 카테고리의 글 목록 (2 Page)