Algorithm/프로그래머스

세무민의 알고가자 : 프로그래머스 나머지 한 점 문제 풀이

세기루민 2021. 3. 11. 15:37
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