https://school.programmers.co.kr/learn/courses/30/lessons/131705
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
안녕하세요, 오늘은 '삼총사'라는 문제를 함께 살펴보려 합니다. 이 문제는 3개의 정수를 선택해서 합이 0이 되는 경우의 수를 찾는 문제로, 브루트 포스 방식을 이용해서 해결할 수 있습니다.
문제 설명
이 문제는 학교에 다니는 학생들이 각자 정수 번호를 가지고 있고, 이 중에서 3명의 학생의 정수 번호를 더했을 때 0이 되면 그 학생들을 '삼총사'라고 부르는 규칙을 가지고 있습니다. 우리의 목표는 주어진 학생들 중에서 삼총사를 만들 수 있는 방법의 수를 찾는 것입니다.
문제 풀이
def solution(numbers):
n = len(numbers)
cnt = 0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
if numbers[i] + numbers[j] + numbers[k] == 0:
cnt += 1
return cnt
1. 우선, 모든 학생들의 정수 번호를 하나씩 비교하기 위해 3중 for문을 사용합니다.
2. 첫 번째 for문은 가장 첫 번째 학생부터, 두 번째 for문은 첫 번째 학생 다음 학생부터, 마지막 for문은 두 번째 학생 다음 학생부터 각각의 정수 번호를 하나씩 가져옵니다.
3. 각각의 학생들의 정수 번호를 더해서 그 결과가 0이면 카운트를 1씩 증가시킵니다.
4. 모든 학생들의 정수 번호를 비교한 후, 최종적으로 카운트한 값을 반환하면 문제를 해결할 수 있습니다.
마무리
'삼총사' 문제는 주어지는 값의 크기가 작아서 간단한 브루트 포스 알고리즘을 이용하여 해결할 수 있습니다.
이렇게 간단한 문제도 실제 코딩 테스트에서는 많이 출제되기 때문에 이런 유형의 문제에 대한 연습도 중요합니다. 다음에도 좋은 문제 풀이로 찾아뵙겠습니다!
'프로그래머스' 카테고리의 다른 글
프로그래머스 - K번째수 [Python] (0) | 2023.06.12 |
---|---|
프로그래머스 - 두개 뽑아서 더하기 [Python] (1) | 2023.06.11 |
프로그래머스 - 시저 암호 [Python] (0) | 2023.06.10 |
프로그래머스 - 문자열 내 마음대로 정렬하기 [Python] (0) | 2023.06.09 |
프로그래머스 - 구슬을 나누는 경우의 수 [Python] (0) | 2023.01.30 |