Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 추억점수
- landing-page
- 요세푸스
- 백준
- popleft()
- 파이썬
- javascript
- 가장많이받은선물
- 스프링
- 1094번
- counter객체
- 25304번
- 생활코딩
- 공 넣기
- 자바
- 25314번
- side-bar
- 게시판구현
- Java
- python
- list
- 큐
- HTML
- springboot
- css
- 1158백준
- 프로그래머스
- 10845파이썬
- 4375
- 나누기연산
Archives
- Today
- Total
Woooang
[프로그래머스] 숫자 짝궁 [파이썬][python] 본문
⭐문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
⭐코드
from collections import Counter
def solution(X, Y):
answer = ''
X , Y = Counter(X) ,Counter(Y)
for x in X:
for y in Y:
if x == y:
answer += x * min(X[x],Y[y])
if answer == '':
return '-1'
elif set(answer[0]) == {'0'}:
return '0'
else:
return "".join(sorted(answer,reverse=True))
⭐풀이
1. 두 정수 X,Y를 Counter 객체로 만든다
- 중복된 숫자들의 개수를 세기 위해서
2. Counter 객체 X,Y 에서 공통으로 나타나는 정수를 찾는다
- 이중for문 사용
- 공통으로 나타나는 X, Y의 정수중 최소값을 가져온다.
-> X에서 1이 2개고 Y에서 1이 3개 -> 짝궁이 2개 생긴다 -> 최소값 가져오면 됨
- (최소값 x 공통으로나타나는 정수) 를 빈 리스트에 넣는다.
3. 리턴값
- 정답 리스트가 비어있으면 -1
- 0으로만 이루어져 있으면 0
- 비어있지 않으면 가장 큰 정수로 바꾸기
⭐추가설명
리턴값 코드를 짤 때
answer = '00' 처럼 0이 여러번 등장하는 경우
예외처리를 할때 set을 이용하면 된다!!
Counter
파이썬의 내장 모듈 'collections' 안에 속한 'Counter'클래스
이 클래스는 해시 가능한 객체(딕셔너리의 키로 사용할 수 있는 객체) 의 개수를 세서 딕셔너리형태로 반환
리스트나 문자열 등의 시퀸스 데이터에서 각 원소 또는 문자가 몇 번 등장했는지 쉽게 계산 가능
from collections import Counter
my_list = [1, 2, 3, 4, 1, 2, 2, 3, 4, 5]
element_counts = Counter(my_list)
print(element_counts)
#Counter({2: 3, 1: 2, 3: 2, 4: 2, 5: 1})
728x90
'[알고리즘]' 카테고리의 다른 글
[백준] 4375번_1 [파이썬][python] (0) | 2024.03.26 |
---|---|
[프로그래머스] 신고 결과 받기 [파이썬][python] (0) | 2024.03.06 |
[프로그래머스] 기사단원의 무기 [파이썬][python] (0) | 2024.03.01 |
[프로그래머스] 문자열나누기 [파이썬][python] (0) | 2024.02.23 |
[프로그래머스] 개인정보 수집 유효기간 [파이썬][python] (0) | 2024.02.17 |