본문 바로가기

Python(알고리즘,문제풀이)/BOJ (Bronze IV)

백준 28431번 / 양말 짝 맞추기 - 파이썬

728x90

📚문제

출처 : 백준(https://www.acmicpc.net/problem/28431)

 

📝풀이

# 내 오답 코드
# 28431 양말 짝 맞추기
a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())
num_list = [a,b,c,d,e]
cnt = 0

for i in num_list:
    if num_list.count(i)>=3 or num_list.count(i)<2:
        cnt += i
        break
print(cnt)

문제에 나온 예시들 가지고

나름 조건도 잘 정해서 잘 풀었다고 생각했는데 계속 오답이 나온다

뭔가 반례가 있는거겠지

근데 내 눈에는 잘 안보여서 게시판에 질문해놨다

알게 되면 수정할 예정 

 

# 28431 양말 짝 찾기
num_list = []
cnt = 0

for _ in range(5):
    num = int(input())
    if num in num_list:
        cnt -= num
        num_list.remove(num)
    else:
        cnt += num
        num_list.append(num)
print(cnt)

구글링하여 다른 분의 코드를 참고했다

이 분은 set() 함수를 사용해주셨는데 

풀이를 보니 set()함수의 특성(중복은 안됨)을 이용하지는 않는 것 같아서

list[]로 풀어보았다

 

▼참고한 코드 출처 

 

1) 비어있는 list 생성

2) for문 5회 반복하면서 숫자 입력

3-1) i가 리스트에 들어있다면

-> cnt에서 i만큼 차감

-> 리스트에서 i 제거

3-2) i가 리스트에 들어있지 않다면

-> cnt에 i만큼 증가

-> 리스트에 i 추가 

 4) 5회반복 후 cnt 값 출력

 

문제에서 반드시 두개씩 두쌍을 만들 수 있다고 했기 때문에

cnt값은 + - 로 상쇄되고 1개 있는 값이 나옴

728x90