반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 카카오
- 코딩테스트
- 스프링
- 알고리즘
- 엘라스틱서치
- 자바
- DPDK
- 쿠버네티스
- programmers
- springboot
- 백엔드
- 스프링부트
- Python
- 개발자
- 네트워크
- 캐시
- Spring
- 파이썬
- IT
- Linux
- 프로그래머스
- 프로그래머스 #카카오 #IT #코딩테스트
- Kakao
- 운영체제
- 도커
- docker
- C
- Java
- Elasticsearch
- 리눅스
Archives
- Today
- Total
저고데
[프로그래머스]숫자 짝꿍 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. 숫자의 자릿수가 3백만 이하이므로 이중 for문은 절대 사용하지 않는다.
2. 런타임 에러를 막기 위해서 딕셔너리를 사용해 각 숫자가 얼만큼 있는지 구한다.
3. 가장 큰 수를 만들어야하기 때문에 9에서부터 0까지 내려오면서 딕셔너리 값을 확인한다. 이 때, 두 딕셔너리의 교집합에 해당하는 숫자만 사용할 수 있으므로 가장 작은 수만큼 반복해서 넣어준다.
4. 딕셔너리 값을 확인하면서 answer에 대입하는 중에 만약 0의 갯수를 확인하는 데 아직도 answer가 null인 경우를 찾아야한다. 000이 답이 될 수가 없기 때문에 반복하는 갯수를 1로 고정시켜준다.
5. 모든 과정을 반복했는데도 answer가 null이면 합집합이 없는 경우이기 때문에 -1를 반환한다.
def solution(X, Y):
answer = ''
one = {str(n):0 for n in range(10)} #2번
two = {str(n):0 for n in range(10)}
for i in X:
one[i]+=1
for i in Y:
two[i]+=1
for i in range(9, -1, -1): #3번
i=str(i)
su=min(one[i], two[i]) #3번 : 가장 작은 수가 합집합 갯수이다.
if answer=='' and i=='0' and. su!=0: #4번
su=1
answer+=i*su
if answer=='': #5번
answer+=str(-1)
return answer
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]124 나라의 숫자 (0) | 2023.02.08 |
---|---|
[프로그래머스]연속 부분 수열 합의 개수 (0) | 2023.02.07 |
[프로그래머스]2개 이하로 다른 비트 (0) | 2023.02.07 |
[프로그래머스]2 X n 타일링 (0) | 2023.02.07 |
[프로그래머스][3차]파일명 정렬 (0) | 2023.02.07 |