분류 전체보기 275

시간과 메모리 측정

코딩 테스트 문제를 풀 때, 시간과 메모리를 측정하는 방법을 알아보자! 파이썬에서는 프로그램 수행 시간과 메모리 사용량을 측정할 수 있다. 문제를 풀면서, 자신이 제대로 알고리즘을 작성하고 있는지 알아야 하기 때문이다. 몇몇 기업은 코딩 테스트를 볼 때, 제출 횟수를 제한 하기 때문에 시간과 메모리를 중간에 체크하는 법을 알면 문제를 옳은 알고리즘으로 풀었는지 미리 알 수 있을 것이다. 아래는 특정한 프로그램의 수행 시간을 측정하는 소스코이다. import time start_time = time.time() # 측정 시작 # 프로그램 소스코드 ~~~~ end_time = time.time() # 측정 종료 print("time : ", end_time - start_time) # 수행시간 출력 예를 들..

복잡도(Complexity)-시간복잡도 와 공간복잡도

복잡도(Complexity) 시간 복잡도(Time Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미 (알고리즘을 위해 필요한 연산의 횟수) 공간 복잡도(Space Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미 (알고리즘을 위해 필요한 메모리의 양) 효율적인 알고리즘을 사용한다고 했을 때, 보통 시간 복잡도와 공간 복잡도는 일종의 Trade off 관계가 성립한다. 메모리를 조금 더 많이 사용하는 대신에 반복되는 연산을 생략하거나 더 많은 정보를 관리하면서 계산의 복잡도를 줄일 수 있다. 이 때, 메모리를 더 소모하는 대신에 얻을 수 있는 시간적 이점이 매우 큰 경우가 종종 있다. 실제로 메모리를 더 많이 ..

[백준/알고리즘/python/java] 1417번 - 국회의원 선거

정답률이 낮은 이유는 아마 제출 수가 적은 것도 그렇지만, 예외처리 때문일 것이다.나도 한 2번 틀리고 반례를 발견했으니 말이다.우선, 시간제한도 2초로 넉넉한 편이어서 for문이나 while문 사용에 거부감이 없었다.이번 코드리뷰는 내가 제출했었던 코드들을 순차적으로 살펴보자. 맨 처음 제출해서 틀렸던 코드는 아래와 같다.import sysinput = sys.stdin.readlinen = int(input())vote_list = []count = 0for i in range(n): vote_list.append(int(input()))dasom = vote_list[0]not_dasom = sorted(vote_list[1:], reverse=True)print(not_dasom[0]-das..

[백준/알고리즘/python/java] 16428번 - A/B - 3

이미지를 누르면 문제링크를 보실 수 있습니다. 굉장히 단순한 문제인데, 정답률이 그에 비해선 막 높진 않아서 풀어본 문제다. 처음엔 나 역시 틀렸다. 다시한번, 써가면서 풀어봤는데, 특징이 있었다. A가 나누어지는 수이고 B가 나누는 수라고 할 때, 1) 단순히 A, B둘다 양수라고 생각하면, 몫은 A//B 가 되고, 나머지는 A%B 가 될 것이다. 2) A가 음수이고 B가 양수라면, 역시 몫은 A//B 가 되고, 나머지는 A%B 가 될 것이다. 3) A가 0이면, B가 뭐든간에, 몫과 나머지는 둘 다 0 이 나올것이다. 여기까진 그냥 우리가 생각하는 수학이다. 4) A가 음수이고 B가 음수라면, 5) A가 양수이고 B가 음수라면, 즉, 나누는 수 B가 음수라면, 값이 달라졌다. 나머지는 양수여야 하는데..

[백준/알고리즘/python/java] 18870번 - 좌표 압축

이 문제도 처음에 시간제한에 걸려서 시간초과가 났었던 문제이다. 로직은 간단한데, 시간초과가 났다면, 분명 어떤 라이브러리를 사용하는 것이거나 더 효율적인 자료구조가 있는 것이다. 방법을 고수하지말고 바꿔야 하는 것을 명심하자. 문제마다 어떤 자료구조로 풀어야 효과적인지 판단하는 것도 중요한 것 같다. 맨 처음 풀었던 코드는 아래와 같다. import sys input = sys.stdin.readline N = int(input()) number_list = [int(num) for num in input().split()] sorted_number_list = sorted(number_list) for i in number_list: order = 0 seen = -1 for j in sorted_n..

반응형