본문 바로가기

코딩테스트

(8)
[프로그래머스] H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [Lv2, 정답률 64%] 1. list가 비어있을 가능성 max(list)를 쓸 때, list가 비어있을 가능성을 생각해야한다. 빈 리스트에 max 함수를 쓰면 런타임 오류가 난다. 2. '이상'인지 '같을 때'인지 생각하기 이래서 틀리면 문제를 찬찬히 한번, 코드 찬찬히 한번 다시 읽어봐야한다. 문제에서는 'h번 이상 인용된 논문이 h편 이상' 이라고 했는데 내가 '이상'을 누락시키면서 테스트..
[프로그래머스] 멀리 뛰기 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [Lv2, 정답률 68%] - 팩토리얼을 이용해 풀었음 - 수가 너무 커지면 나눗셈 시 OverFlowError가 발생함 - 나눗셈 대신 // 부호 사용해 해결 def solution(n): answer = 0 for i in range(n//2+1) : # i는 2칸이 들어가는 갯수 multiple = 1 for j in range(i+1, n-i+1) : multiple *= j for k i..
[프로그래머스] 숫자 짝꿍 [Lv.1] 정답율 56% https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - for문에서 pop으로 원소를 삭제하면 index가 실시간으로 달라지기 때문에 해당 리스트 속 모든 원소에 대해 코드를 실행하지 못할 수도 있다 - int()를 쓰면 경우에 따라 시간 초과가 될 수 있으니 주의할 것 [오답] def solution(X, Y): answer = [] X = list(X) Y = list(Y) for idx_x, x in en..
[프로그래머스] 개인정보수집 유효기간 [Lv.1] 정답율 40% https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - datetime 모듈을 이용해 문자열 날짜를 컴퓨터가 이해하는 날짜 포맷으로 변경했다 - dateutil.relativedelta를 이용해 현재 날짜에서 개월 또는 일자 단위로 빼거나 더하는 법을 배웠다 [코드] from datetime import datetime from dateutil.relativedelta import relativedelta de..
[프로그래머스] 둘만의 암호 [Lv.1] 정답율 50% https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - string 모듈을 통해 영어 소문자를 알파벳 순으로 불러올 수 있다. import string alphabet_list = list(string.ascii_lowercase) [코드] import string def solution(s, skip, index): alphabet_list = list(string.ascii_lowercase) answer ..
[프로그래머스] 구명보트 [Lv.2] 정답율 68% https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - greedy algorithm - 반복문은 1번만 써야 시간 초과 실패를 하지 않는다 - pop(n) 대신 리스트[idx]를 이용해야 시간을 줄일 수 있다. pop(n)의 시간복잡도는 O(n)인 반면, list[idx] 검색의 시간 복잡도는 O(1)이기 때문이다. - 참고로 pop, remove, insert의 시간복잡도는 모두 O(n)이다. 하지만 리스트 ..
[프로그래머스] 정수를 나선형으로 배치하기 [Lv.0] 정답율 45% https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - 변하는 수는 총 4개 각각의 변수를 모두 만들어야 한다. 변수를 2개만 만들려고 해서 계속 실패함. [코드] def solution(n): answer = [[0]*n for _ in range(n)] count = 0 min_row = min_col = 0 max_row = max_col = n-1 while count < n*n : for i in ra..
[프로그래머스] 달리기 경주 [Lv.1] 정답율 39% https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] - 리스트를 이용하면 시간 초과로 탈락. 해쉬 테이블(딕셔너리)를 만들어서 풀어야한다. [정답] def solution(players, callings): name_dict = {name:rank for rank, name in enumerate(players)} rank_dict = {rank:name for rank, name in enumerate(pla..