프로그래머스_Python_오답노트_ 삼항 연산자 및 리스트 컴프리헨션, index() find() 정리

HEE·2025년 3월 24일
0

1. 프로그래머스 python 코딩테스트

Level 0. 숫자 찾기

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

나의 오답 확인

  1. 문법 요류 있음.
def solution(num, k):
    str(num)
    return [n.index(i) if i == str(k) else -1 for i in n]

1.str(num)으로만 쓰면 변경된 타입이 num에 저장되지 않음. 변수설정을 해줘야함. n = str(num) 이 옳음.
2. .index숫자 사용 불가. 문자 리스트 사용 가능함.
3. [참값 if 조건 else 거짓값 for in 리스트] 는 무조건 [] 괄호가 있어야함.

  • 삼항자 연산식 []필요 없음.
    참값 if 조건 else 거짓값 for in 리스트
  • 리스트 컴프리헨션 [] 필수
    [i for i in 리스트 if 조건]
    [참값 if 조건 else 거짓 for i in 리스트]
  1. []대괄호를 친다고 해도, 문제가 '위치 하나만 반환' 하라고 했는데, [ ] 괄호를 치면, [ 2, 3, -1, -1, 1, ]이런식으로 모든 값에 대하여 반환하게됨.

정답 확인

def solution(num, k):
    return str(num).index(str(k))+1 if str(k) in str(num) else -1
  • 같은 문자 타입끼리 비교해야함. 문자와 숫자 비교 불가.
  • .index()는 처음 나온 k값의 인덱스만 반환함. 중복값이있어도, 가장 먼저 나온 위치값을 반환하기 때문에 사용 가능.
def solution(num, k):
    return str(num).find(str(k))+1 if str(k) in str(num) else -1
  • .index() 대신 .find() 써도 됨.

. find() 정리

  1. 처음 등장한 위치만 반환
  2. 문자열에서만 사용 가능.
    리스트 불가 - .index()사용
profile
ALL IS WELL

0개의 댓글