프로그래머스 4

[코딩테스트 문제 풀이 전략] 시간 복잡도 / 시간 복잡도 줄이는 Tip

1. 시간 복잡도란 ? 코드를 실행하면 원하는 기능을 수행하고 종료되기까지 시간이 소요되는데, 이를 더 효율적이고 빠르게 작동시키고 싶다면 어느 알고리즘이 더 효율적인지 비교할 수 있는 '기준'이 필요하다. 문제 해결에 필요한 입력 값과 문제를 해결하는 프로그램이 주어졌을 때, 프로그램이 입력값을 받아 동작하고 결과를 만들어내는데 걸리는 정도를 복잡도라고 한다. 그 중에서 얼마나 시간이 걸리는지는 시간 복잡도로 평가하고, 얼마나 많은 메모리를 사용하는지는 공간 복잡도로 평가한다. 코딩테스트에서는 가장 먼저 제시된 '제한 시간'과 '메모리 사용량'을 확인한 후, 조건에 맞게 실행되도록 자료구조와 알고리즘을 선택하고 문제를 풀어야 한다 ⭐️⭐️⭐️⭐️ 🚨 프로그래머스에서는 특별한 언급이 없다면 제한 시간이 ..

Algorithm 2023.12.28

[코딩테스트 문제 풀이 전략] 코딩테스트 관련 Tip

1. 코딩테스트를 보는 이유 문제 해결 과정을 보기 위해 모든 것의 기초이자, 생각하는 실력을 다지기 위해 똑같은 결과물이라도 더 빠르고 효율적으로 해결하기 위해 2. 코딩테스트를 준비하는 과정 문제를 읽고 스스로 풀어보는 시간을 갖는다. 문제를 모두 풀었다면 과정을 되짚으면서 모범답안을 읽어본다. (문제를 어떻게 이해하고 접근했는지 살펴보고, 본인의 풀이와 어떤 점이 다른지와 어떤 점이 부족했는지 생각할 것) 설명이 이해되지 않는 부분은 체크하고 다시 풀이해본다. 💡 시간 복잡도란 ? 프로그램이 작동하는데 걸리는 시간을 평가하는 척도이자, 특징 크기의 입력에서 수행되는 연산의 횟수 💡 공간 복잡도란 ? 프로그램이 작동하는데 사용되는 메모리의 양을 평가하는 척도 3. 코드를 작성할 때 흔히 하는 실수 존..

Algorithm 2023.12.28

[프로그래머스 Lv.2] 기능개발

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(progresses, speeds): answer = [] length = len(progresses) while len(progresses) > 0: count = 0 remain = 100-progresses[0] if remain%speeds[0] != 0: remain = remain // speeds[0] + 1 else: remain = remain // speeds[0] progresses = [value+(remain*..

[프로그래머스 Lv.2] 올바른 괄호

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): answer = True stack = [] for item in s: if len(stack) == 0: stack.append(item) elif stack[-1] == '(': if item == ')': stack.pop() elif item == '(': stack.append(item) else: stack.append(item) if len(stack) != 0: return False return True 이번 문제는 괄호만 입력받는다는 조건 하에, 괄호가 올바르게..