☑️ 제일 작은 수 제거하기
[문제 조건]
- 배열의 길이가 1개 이하일 때 -1 반환하고,
- 1개 초과 일때 가장 작은 수 조회 후 삭제
- 나머지 값 리스트로 출력
▶ 문제 해결 & 피드백 POINT : 리스트에서 최소/최대값 조회시 내장함수 `min` `max` 활용가능
[풀이 과정 1 ]
- `if` 조건문으로 배열의 길이가 1초과 일때 -1 반환
- 1이하일때 내장함수 `min` 사용하여 가장 작은 값 조회 -> `remove` 메소드 사용하여 리스트에서 제거
- for 문으로 새로운 리스트에(빈) 저장
def solution(arr):
answer=[]
if len(arr)==1: # 배열 길이가 1개 일때, 빈 배열에 -1 담기
answer.append(-1) # or [-1] 로도 해줄수 있음
else: # 배열 길이가 1개 초과 일때,
arr.remove(min(arr)) # 가장 작은값 먼저 리스트에서 삭제
for i in arr:
answer.append(i) # 빈 배열에 순회하면서 추가하기
return answer
[풀이과정 2 ]
- else 절에서 가장 작은 값이 아닌것만 리스트에 추가 해주고자 함
- 시간초과 오류 : for 문 내에 & min(arr) 함수 사용 하여 이중루프 문제 발생. 시간초과 에러로 오답
- 해결 : for문 시작전 min(arr) 변수에 선 할당 후 조건문 진행.
#1. 시간초과로 오답
def solution(arr):
answer=[]
if len(arr)==1: # 배열 길이가 1개 일때, 빈 배열에 -1 담기
answer.append(-1)
else: # 배열 길이가 1개 초과 일때,
for i in arr: #이중루프 시간 초과 포문 + min(arr)문
if i != min(arr): # 리스트 값이 최소값이 아닐때
answer.append(i) # 빈 배열에 순회하면서 추가하기
return answer
#2. 해결: 이중for문 제거 min(arr) 함수 for 문 시작전 변수에 저장
def solution(arr):
answer=[]
if len(arr)==1:
answer.append(-1)
else:
a=min(arr) # 변수에 저장
for i in arr:
if i != a:
answer.append(i)
return an
☑️ 자연수 뒤집어 배열로 만들기
[문제 조건]
- 자연수 n 을 뒤집어 각 자리 숫자를 원소로 가지는 배열로 리턴
▶ 문제 해결 & 피드백 POINT : 자료형 변환 & insert 메서드 활용
[풀이 과정 1 ]
- 자연수 문자열로 변환 : `str` 함수
- 각각의 원소를 리스트에 넣고 : `for` 문 & `append` 메소드
- 역순으로 출력 : `reverse()` 메소드 ( 주의! for 문 밖에서 역순으로 변환 해줘야함)
def solution(n):
answer = []
for i in str(n):
a=int(i) #문자열로 받은거 다시 정수형으로 변환
answer.append(a) # 빈 리스트에 추가
answer.reverse() #역순으로 반환 (주의! for 문 밖에서)
return answer
[풀이 과정 2 ]
- list.insert 메소드로 구현
- 문자열로 받고 : str(n)
- 첫번째 인덱스로 순서대로 추가해줌 : `insert` 메소드
- insert(index,value) : 리스트의 특정 인덱스에 값을 추가해주는 메서드
- ex. n=1234라면, ~ answer.inser(0,int(i)) : [4] → [3,4] → [2,3,4] → [1,2,3,4] 이렇게 추가됨
def solution(n):
answer = []
for i in str(n):
answer.insert(0,int(i)) #첫번째 인덱스에 순서대로 넣어주면 한칸씩 밀리면서 [1,2,3,4,5] -> ---3,2,1
return answer
☑️ 자릿수 더하기
[문제 조건]
- 자연수의 각 자리수의 합을 리턴
▶ 문제 해결 & 피드백 POINT : 자료형 변환 & 빈 변수 선언후 누적합
[풀이 과정 1 ]
- 문자열로 받아서 : `str`
- 변수에 누적합 : `for` 문 & `+` 연산
def solution(n):
string=str(n)
answer=0
for i in string:
answer+=int(i)
return answer
[풀이 과정 2 ]
- `while ~ break` 구문을 사용한 코드
- 로직 : 각자리의 자연수는 10으로 나눈 몫들의 나머지 임
- 10으로 나눈 나머지들을 변수에 누적합
- 10으로 나눈 몫은 다시 나누기 대상으로 할당
def solution(n):
remain=0 #나머지 저장해줄 변수 선언
while True: #나눌몫이 없을때까지 무한 루프
remain += n % 10 # 10으로 나눈 나머지는 remain 변수에 저장
n = n // 10 #10으로 나눈 몫은 다시 나누기 대상으로 할당
if n == 0: #10으로 안나눠지면 stop
break
return remain
☑️ 나누어 떨어지는 숫자 배열
[문제 조건]
- 리스트 요소가 변수로 나누어 떨어지는 값 리스트 저장
- 오름차순 정렬
- 배열에 값이 없다면 -1 값 저장
▶ 문제 해결 & 피드백 POINT : 특정 값만 리스트에 저장 & 리스트 정렬(sort 메소드)
[풀이 과정 1 ]
- 리스트의 요소들이 변수로 나누어 떨어질때 빈 배열에 저장 : `i%divisor==0` & `append` 메서드
- 배열 오름차순 정렬 : `sort` 메서드
- 배열에 값이 없다면 리스트에 -1 값 반환 : `len(리스트) ==0`
def solution(arr, divisor):
answer = []
for i in arr:
if i%divisor==0: # 나누어 떨어질대 빈배열에 넣어줌
answer.append(i)
answer.sort() # 오름차 정렬
if len(answer)==0: #아무것도 없을때
answer.append(-1) # -1만 담아줘
else:
answer
return answer
☑️ REMIND
- 문제 풀이 로직 : 원하는 바 정의 → 로직 설계 → 코드 구현
- 메소드는 반환만 됨. 출력하려면 프린트 필수 `ex. answer.append(60) 이면 answer에 60 이 저장만 됨. 출력값으로 보려면 print( answer.append(60) ) 해줄것`
- 개행(다음행) : `\n`
- my_list.pop(-1) : 마지막꺼 떼어서 보여줌
- my_list[-1] : 마지막꺼 비춰주는 개념
'PYTHON' 카테고리의 다른 글
실습1 | 제어문 (FOR & IF) 과 시퀀스(LIST & DICTIONARY &STRING) 문제풀이 (1) | 2024.12.16 |
---|---|
코테 준비 | 프로그래머스 x만큼 간격이 있는 n개의 숫자 / 없는 숫자 더하기 (0) | 2024.12.16 |
파이썬 | 함수(def)와 변수, 인수, 매개변수 (1) | 2024.12.11 |
파이썬 | 조건문 if / 반복문 for & while 2 (1) | 2024.12.11 |
파이썬 | 파이썬 기본 자료형 / 리스트 / 딕셔너리 추가 (0) | 2024.12.09 |