Python 91

[백준/알고리즘/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..

[Python] is와 == / and와 & / or과 |

언뜻보면 비슷하다고 느껴지는 연산자들의 차이가 무엇인지 알아보자. 먼저, is와 == 이다. is identity 연산자 (식별 연산자) reference comparison (참조 비교) --> 주소 비교! == 비교 연산자 value comparison (값 비교) 뭐든 예시를 살펴보면서, 이해하는것이 가장 빠르니까 예를 한번 살펴보자. 왼쪽 코드와 같이 print문을 출력해보면 모두 값이 True가 나온다. 그렇다면, 값을 변경해보면 어떨까? == 연산은 여전히 다 True가 나왔지만, is연산에서는 False 가 나왔다. 앞서 소개했듯이, is 연산이 값비교가 아닌 주소 비교 연산자이기 때문이다. 파이썬은 새로운 변수에 할당하려는 값이 이미 메모리에 존재하면 새로운 값을 생성하지 않고 기존에 존재..

[백준/알고리즘/python/java] 1764번 - 듣보잡

정답 비율이 높지 않아서, 뭔가 시간초과와 관련된 문제이겠거니 싶었다. 역시나 처음 풀었던 코드는 시간초과에 걸렸다. 아래는 처음 시간초과에 걸렸던 코드이다. import sys import collections input = sys.stdin.readline a, b = map(int, input().split()) answer = [] no_heard = [input().strip() for i in range(a)] no_seen = [input().strip() for i in range(b)] if a < b: for word in no_heard: if(word in no_seen): answer.append(word) else: for word in no_seen: if(word in no_..

반응형