728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1845
비교적 간단한 문제이다..
이 문제를 리뷰하는 이유는, 아래가 내가 푼 풀이인데 다른 사람의 풀이가 너무 좋아 리뷰하고자 한다.
문제를 풀 때 주어진 문제에 충실하는 것도 좋지만, 언제든 더 쉽게 풀 수 있는 방법이 있으므로 연습을 많이 하자.
생각해보면 우리가 수학 문제를 풀 때 정석대로 풀이하는 것도 배웠지만, 문제의 유형이나 테크닉을 익혀 쉽게 푸는 것도 배운 것 처럼,,
def solution(nums):
answer = 0
dict = {}
can_get = len(nums)//2
for num in nums:
if num in dict:
dict[num] = dict[num]+1
else:
dict[num]=1
answer = len(dict)
if len(dict) > can_get:
answer = can_get
return answer
## 다른 사람의 풀이 #1
set 함수를 이용해 바로 하나의 집합을 만들어 냈다. 물론 딕셔너리와는 다르지만, 중복을 허용하지 않는다는 공통점을 이용해 풀이한 것으로 추측한다.
def solution(ls):
return min(len(ls)/2, len(set(ls)))
## 다른 사람의 풀이 #2
class ALWAYS_CORRECT(object):
def __eq__(self,other):
return True
def solution(a):
answer = ALWAYS_CORRECT()
return answer;
도대체 이건 뭘까,,
수정 -> 이 코드는 치팅 코드라고 생각된다.
__eq__ 함수는 동등 비교를 할 때 사용하는 함수인데, 이 함수를 오버라이딩해서 아무 조건 없이 True를 반환하게 해준 뒤,
해당 메소드를 가지는 인스턴스를 반환시켜서 프로그래머스 채점할 때 정답 값에 상관없이 전부 True를 출력하게 하여 통과되게 만드는 코드이다.
아마 언어를 좀 잘 다루는 분의 코드라고 생각된다 ㅋㅋ
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/파이썬] 게임 맵 최단거리 (0) | 2023.09.10 |
---|---|
[프로그래머스/파이썬] 올바른 괄호 (0) | 2023.09.08 |
[프로그래머스/파이썬] 피로도 (0) | 2023.09.04 |
[프로그래머스/파이썬] 타겟 넘버 (0) | 2023.08.29 |
[프로그래머스/파이썬] 정수 삼각형 (0) | 2023.05.30 |