본문 바로가기
반응형

코딩테스트65

[프로그래머스] 덧칠하기 Python 풀이 문제 구현 문제가 꽤 긴데 사실 입출력 예를 보면 매우 간단한 문제다. 처음 색칠 안된칸부터 색칠해서 롤러를 칠하고 그 롤러의 길이 뒤부터 색칠이 안된곳을 찾아서 다시 칠해주면 된다. 코드 def solution(n, m, section): result=0 i=0 section = set(section) while i 0: temp = section[0] + m while len(section) != 0 and temp > section[0]: section.pop(0) answer += 1 return answer 벽 길이가 짧고 칠할게 많을 때는 원래 풀이가 좋지만 길이가 매우 길고 칠할구역이 적을 때 더 효율적인 코드라고 생각해서 써보았다. 칠할 구역이 남아있을 때까지를 while조건으로 잡고 se.. 2023. 4. 6.
[프로그래머스] 과제 진행하기 Python 풀이 문제 구현 이 문제는 따로 쉽게 푸는 방법이 없는 것 같아 문제를 그대로 따라가면서 구현을 하면 된다. 우선 기본적으로 plans를 시간순서로 sorting 한 후 시작하는 게 좋다. 코드 def solution(plans): plans = sorted(plans, key=lambda x : x[1]) todostack = [] answer = [] nowtime = 0 beforetime = -1 for i in range(len(plans)): h,m = plans[i][1].split(':') plans[i][1] = int(h)*60+int(m) if i>0: remainingTime = plans[i][1] - plans[i-1][1] if remainingTime - int(plans[i-1].. 2023. 4. 6.
[프로그래머스] 연속 펄스 부분 수열의 합 Python 풀이 문제 구현 sequence에 [-1, 1, -1, 1......] 을 곱한 pulse배열과 sequence에 [1, -1, 1, -1......] 을 곱한 revpulse배열을 준비한다. 여기서 편의를 위해 accumulate 함수를 사용할 건데 배열을 돌며 이전 값에 따른 처리(기본 덧셈)를 해주는 함수이다. 코드 부분에서 추가로 설명하겠다. 그렇게 되면 각 배열 인덱스에 더해진 값이 있을건데 그중의 max값을 리턴하면 된다. 코드 from itertools import accumulate def solution(sequence): pulse = [((-1)**(i%2))*sequence[i] for i in range(len(sequence))] revpulse = [i*-1 for i in puls.. 2023. 3. 24.
[프로그래머스] 혼자서 하는 틱택토 Python 풀이 문제 틱택토는 3x3에서 하는 3목이라고 보면 된다. 구현 O와 X의 가로와 세로, 대각선 라인의 완성된 3목의 수를 각각 세어서 가능한 상황인지 판단해야 한다. 코드 def solution(board): strboard = ''.join(board) valid = strboard.count('O')-strboard.count('X') if valid not in [0,1]: return 0 colboard = list(zip(*board)) ocnt=0 xcnt=0 for i in range(3): if colboard[i].count('O')==3 or board[i].count('O')==3: ocnt+=1 if colboard[i].count('X')==3 or board[i].count('X').. 2023. 3. 9.
반응형