728x90
이번에 풀 문제는 나머지 한 점!
대표적으로 코딩테스트를 보기 전 모의 테스트 시험 문제로 자주 출제된다.
문제 설명 및 입출력!
문제 풀이
이번 문제를 푼 방법은 결국에 사각형의 길이가 일치하지 않는 값만 찾으면 된다는 점에서 생각했다.
즉 2차원 배열에서 첫번째를 Frist, 두번째를 Last라고 가정할 때
Frist와 Last가 동일한 값이 존재하지 않는다면 그 값이 결국 나머지 한점이 된다.
결론적으로 문제를 푸는 방법은!
1. V를 Frist, Last로 분할하고
2. 반복문을 돌려서 중복되는 값이 없다면 그 값을 출력한다.
코드
def solution(v):
frist, last = list(), list()
for i in range(len(v)):
frist.append(v[i][0])
last.append(v[i][1])
count = len(v)
frists, lasts = 0, 0
while count > 0:
fristText, lastText = frist[0], last[0]
frist = frist[1:]
last = last[1:]
if fristText in frist:
frist.append(fristText)
fristText = 0
else:
frists = fristText
if lastText in last:
last.append(lastText)
lastText = 0
else:
lasts = lastText
count -= 1
return [frists, lasts]
위에서 말한 내용처럼 구현했고
Count를 사용한 이유는 결국 무한반복을 방지하기 위해서 만들었다.
즉 while을 사용하지 않고 for문을 이용해도 무관하다.
그래서 pop을 해주는 방식이 아닌 list를 새로 추가하는 방식으로 구현했고
중복되는 값이 존재한다면 list에 맨 뒤에 추가해준다면
결론적으로 같은 값을 가지고 있지 않는다면 else에서 걸리게 된다.
끝!
사실 이 문제를 포스팅을 한 줄 알았지만...
안했길레 생각나서 해봤습니다.
내일 코딩테스트를 봐야되서 셋팅하다가 우연히 문제를 풀게 된거라서 ㅎ
무튼 다음에도 더 좋은 포스팅으로 찾아오겠습니다!
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[세무민의 코딩일기] 숫자 문자열과 영단어 문제 풀이 (0) | 2021.07.31 |
---|---|
[세무민의 코딩일기] 보호소에서 중성화한 동물 문제 풀이 (0) | 2021.07.30 |
세무민의 알고가자 : 프로그래머스의 소수 만들기 문제 풀이 (0) | 2021.03.10 |
세무민의 알고가자 : 프로그래머스 제일 작은 수 제거하기 문제 풀이 (0) | 2021.03.09 |
세무민의 알고가자 : 프로그래머스 문자열 다루기 기본 문제 풀기 (4) | 2021.03.07 |