☑️ 정수 내림차순으로 배치 하기
[문제]
- n은 1이상의 자연수. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
[문제 해결]
- 풀이1 ) 문자열로 변환 → 리스트에 추가하면서 정렬 →리스트 문자열로 합쳐주고 →숫자형으로 변환
- `.insert` 메소드 사용 : 문자열 순서대로 빈 리스트에 추가 ex. [1,2,3,4,5] → [1] → [2,1] 등.. 인덱스[0]에 추가됨
- `join` 메소드 사용 : 리스트 값을(str) 문자열로 연결해줌
- `int` 함수 사용 : 다시 정수로 변환
- 문제점 ) 주피터 환경에서는 제대로 값이 나오지만, 프로그래머스에서는 오답 처리 됨.
- insert 실행시 시간이 오래걸림. 인덱스[0]에 값 하나씩 넣으니까 나머지 값들을 계속 미뤄야 함.
- 형 변환 계속 하는 번거로움
- 해결 ) 문자열 변환 → 문자열 정렬 내장 함수 `sorted` 사용하여 간단하게 오류 해결
- sorted 내장 함수 사용 : 문자열 내림차 정렬 (reverse=True) -> 반환값은 리스트로 저장됨
- join 메소드 사용 : 리스트 값을 join 메소드로 연결
# 방법1 : insert 메소드 사용
def solution(n):
strr=str(n) #문자열로 변환
answer = []
for i in strr:
answer.insert(0,i) #문자열 순서대로 인덱스[0] 에 계속 추가함
a = int(''.join(answer)) #answer 리스트의 값을 join 메소드로 합쳐줌 & 정수로 변환
return a
#해결 : sorted 함수 사용
def solution(n):
strr=str(n)
sorted_str = sorted(strr,reverse=True)
answer = int(''.join(sorted_str))
return answer
▼.Sort() vs Sorted()
▼.Join
☑️ 정수 제곱근 판별
[문제]
- 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
[문제 해결]
- 풀이 ) for & range 함수 & if 조건문으로 해결 하기
- for & range 함수로 n 의 제곱근 찾기
- 제곱근이면 리턴, 아니면 -1 출력
def solution(n):
for i in range(1,n+1):#n의 제곱근이 있는지 1~121 까지
if n**(1/2) == i: #제곱근이 i랑 같으면
return (i+1)**2 # 리턴을
else:
return -1
- 문제점 ) if 문은 깔대기 형이라 for문 의 i 가 if 조건에 들어오면 if 값 리턴, 아니면 else 리턴 됨
- ex. n= 121 일때 for문에 의해 i=1부터 시작되어 else가 출력되는데 그리고 종료 되어 버림.
- but 121의 제곱근은 11임 그 전에 확인 후 종료 되어버림 → 위 함수는 무조건 -1이 출력 됨.
- 해결 1) 리턴 값 변수에 할당 & if 문 break로 제어
- i 의 리턴값을 변수에 저장해주며 for 문 계속 순회 → n의 제곱근이 있어 if문 성립시 break 종료, 아닐경우 -1이 최종 반환
def solution(n):
answer = 0
for i in range(1,n+1):#n의 제곱근이 있는지 1~121 까지
if n**(1/2) == i: #제곱근이 i랑 같으면 (i는 정수)
answer= (i+1)**2 # answer에 넣어줌
break # 반복문 멈춤
else:
answer = -1
return answer
- 해결 2 ) if 문에 들어올때만 return 아니면 return -1
def solution(n):
for i in range(1,n+1):#n의 제곱근이 있는지 1~121 까지
if n**(1/2) == i: #제곱근이 i랑 같으면 (i는 정수)
return (i+1)**2 # 리턴을 해버리고 최종적으로 -1이 출력됨.
return -1
'PYTHON' 카테고리의 다른 글
데이터 전처리| Pandas 기본 함수2 (loc, iloc,isin) (0) | 2024.12.17 |
---|---|
데이터 전처리 | Pandas 기본 함수 1 (1) | 2024.12.17 |
실습3 | 이상치 검사하기 ( IQR 기반/ numpy 라이브러리) (0) | 2024.12.16 |
실습2 | 이메일 유효성 검사(split,endswith,find) / 포인트 적립및 차감하기(CLASS) 문제풀이 (0) | 2024.12.16 |
실습1 | 제어문 (FOR & IF) 과 시퀀스(LIST & DICTIONARY &STRING) 문제풀이 (1) | 2024.12.16 |