본문 바로가기

코딩테스트19

체육복 문제풀이 def solution(n, lost, reserve): #잃어버린 학생 중 여벌을 가지고 있는 학생 제외 for lost_st in lost[:]: if lost_st in reserve: del reserve[reserve.index(lost_st)] del lost[lost.index(lost_st)] lost.sort() reserve.sort() for lost_st in lost[:]: for reserve_st in reserve[:]: if lost_st - 1 == reserve_st or lost_st + 1 == reserve_st: del reserve[reserve.index(reserve_st)] del lost[lost.index(lost_st)] break answe.. 2021. 5. 28.
삼각 달팽이 문제풀이 import math def solution(n): answer = [] triangle = [0 for i in range(n)] for i in range(0, n): triangle[i] = [0 for i in range(i+1)] num = 1 max_num = 0 for i in range(1, n+1): max_num += i y = 0 x = 0 while(n > 0): if n==0: break for i in range(0, n): triangle[y][x] = num num += 1 y += 1 if n==0: break n -= 1 x += 1 y -= 1 for i in range(0, n): triangle[y][x] = num num += 1 x += 1 if n==0.. 2021. 5. 26.
문자열 압축 문제풀이 def solution(s): answer = 0 min_st = len(s) for length in range(1, len(s)): new_st = [s[i:i+length] for i in range(0, len(s), length)] answer_st = '' key = None for word in new_st: if key: if key == word: count += 1 else: if count > 1: answer_st += str(count) + key key = word count = 1 else: answer_st += key key = word count = 1 else: key = word count = 1 if count > 1: answer_st += str(coun.. 2021. 5. 26.
짝지어 제거하기 문제풀이 효율성 실패 처음 문제를 해결한 솔루션은 하드코딩적인 방법을 사용했다. 문제 그대로 같은 부분을 발견하면 문자열에서 잘라내고 그 전부터 다시 검사하는 방식을 사용했다. 하지만 이는 효율성에서 점수를 받지 못했다. 효율성 반 성공 역시 위의 효율성 실패는 알고리즘을 제대로 활용하지 못한 점에 있다. 따라서 어떤 알고리즘을 사용해야 적절한 지 고민해본 결과 stack이 좋다고 판단했다. 하지만 stack을 활용하긴 했지만 심플한 솔루션을 내지 못했다. 효율성 해결 def solution(s): answer = 0 s = list(s) stack = [] for word in s: if stack: if stack[-1] == word: stack.pop() else: stack.append(word.. 2021. 5. 25.