코딩 테스트 챌린지

[8월 코테 챌린지] 프로그래머스 :: (Lv0) 224개 (Lv1) 61개 (Lv2) 29개 (Lv3) 4개 // 누적 318개

  • -
728x90
반응형

2024/08/19

(Lv0) 224개 (Lv1) 61개 (Lv2) 29개 (Lv3) 4개 // 누적 318개


풀이한 문제

Lv3

  1. 네트워크
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제 풀이

def solution(n, computers):
    computers.sort(reverse=True)
    ans = [] ; answer=0
    for i in range(n):
        a = []
        for j in range(n):
            if computers[i][j] == 1:
                a.append(j+1)
        if len(ans) == 0:
            ans.append(a)
        else:
            k = 0
            for j in range(len(ans)):
                if len(set(a) & set(ans[j])) >= 1:
                    ans[j] = list(set(ans[j]) | set(a))
                    break
                else:
                    k += 1
            if k == len(ans):
                ans.append(a)
    
    # while True:
    for i in range(len(ans)-1):
        k = 0
        for j in range(i+1,len(ans)):
            if len(set(ans[i]) & set(ans[j])) >= 1:
                ans[j] = list(set(ans[i]) | set(ans[j]))
                ans[i] = ans[j] #list(set(ans[i]) | set(ans[j]))
                break
            else:
                k += 1
        if k == len(ans):
            ans.append(a)
    
    while ans:
        a = ans.pop(0)
        if a not in ans:
            answer+=1
    return answer

 

시도해볼 수 있는 테스트 케이스는 아래와 같다.

print(solution(3, [[1, 1, 0], [1, 1, 1], [0, 1, 1]]), 1)
print(solution(3, [[1, 0, 1], [0, 1, 0], [1, 0, 1]]), 2)
print(solution(4, [[1, 1, 0, 1], [1, 1, 0, 0], [0, 0, 1, 1], [1, 0, 1, 1]]), 1)
print(solution(3, [[1, 1, 0], [1, 1, 0], [0, 0, 1]]), 2)
print(solution(3, [[1, 1, 0], [1, 1, 1], [0, 1, 1]]), 1)
print(solution(4, [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]), 4)
print(solution(4, [[1, 1, 0, 1], [1, 1, 0, 0], [0, 0, 1, 1], [1, 0, 1, 1]]), 1)
print(solution(3, [[1, 0, 1], [0, 1, 0], [1, 0, 1]]), 2)
print(solution(3, [[1, 1, 0], [1, 1, 1], [0, 1, 1]]), 1)
print(solution(3, [[1, 1, 0], [1, 1, 0], [0, 0, 1]]), 2)
print(solution(4, [[1, 1, 0, 1], [1, 1, 0, 0], [0, 0, 1, 1], [1, 0, 1, 1]]), 1)
print(solution(7, [[1, 0, 0, 0, 0, 0, 1], [0, 1, 1, 0, 1, 0, 0], [0, 1, 1, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 1, 0, 0, 1, 1, 0], [0, 0, 0, 0, 1, 1, 1], [1, 0, 0, 0, 0, 1, 1]]), 1)

 

마지막 줄만 통과할 수 있다면 전부 통과 가능할 것이라고 생각한다!


미완성 문제

Lv2

  1. 구명보트
  2. 피로도
  3. 전화번호 목록
320x100
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.