코테 준비 | 프로그래머스 조건문 & 반복문 문제 풀이

2024. 12. 11. 19:14·PYTHON

☑️ 제일 작은 수 제거하기

[문제 조건]
- 배열의 길이가 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
'PYTHON' 카테고리의 다른 글
  • 실습1 | 제어문 (FOR & IF) 과 시퀀스(LIST & DICTIONARY &STRING) 문제풀이
  • 코테 준비 | 프로그래머스 x만큼 간격이 있는 n개의 숫자 / 없는 숫자 더하기
  • 파이썬 | 함수(def)와 변수, 인수, 매개변수
  • 파이썬 | 조건문 if / 반복문 for & while 2
성장하는 쿠키의 로그 기록
성장하는 쿠키의 로그 기록
성장하는 쿠키의 모든 로그를 담습니다.
  • 성장하는 쿠키의 로그 기록
    쿠키 로그
    성장하는 쿠키의 로그 기록
  • 전체
    오늘
    어제
    • 분류 전체보기 (143)
      • TODAY I LEARNED (2)
      • 데이터 분석 (13)
      • SQL (49)
      • PYTHON (39)
      • 통계,검정,머신러닝 (22)
      • TABLEAU (5)
      • 내배캠 | 데이터분석 부트캠프 (12)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    데이터분석가
    데이터분석
    내배캠
    오블완
    코테준비
    태블로
    MySQL
    코딩테스트준비
    데이터리안
    Wil
    머신러닝
    데이터분석프로젝트
    파이썬
    Python
    티스토리챌린지
    SQL
    pandas
    해커랭크
    sql코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
성장하는 쿠키의 로그 기록
코테 준비 | 프로그래머스 조건문 & 반복문 문제 풀이
상단으로

티스토리툴바