본문 바로가기
Pyalgo100

2024.01.30 (화) Pyalgo100 파이썬 문제풀이

by gosikoca 2024. 1. 30.

오늘은 탐색 이라는 알고리즘에 대해서 풀어보려고 한다. 가장 기본이자 기초이지만 제대로 개념을 모른다면 실수를 많이 할 수 있는 부분이라고 생각을 한다. 그렇기에 오늘은 실제로 많이 활용되는 부분 중에 하나인 탐색 이라는 개념을 주제로 문제를 풀어보았다.

 

1. 숫자 배열 탐색

문제 설명
정렬된 숫자 배열과 타겟 숫자가 주어집니다. 주어진 배열에서 타겟 숫자의 위치(인덱스)를 찾는 코드를 작성해주세요. 배열에 타겟 숫자가 없는 경우 False를 반환합니다.

제한 사항
배열은 오름차순으로 정렬되어 있습니다.
배열에 중복된 숫자는 없습니다.
배열의 크기는 최소 1에서 최대 100까지입니다.

 

입출력 설명
첫 번째 예시에서는 타겟 숫자 5가 배열의 인덱스 2에 위치하므로 2를 반환합니다. 두 번째 예시에서는 타겟 숫자 7이 배열에 없으므로 False를 반환합니다.

 

문제 설명을 읽으면서 생각보다 간단한 문제라고 생각이 되었다. 배열속에 타겟 숫자가 존재한다면 그것의 인데스를 출력값으로 도출시키면 되는 문제였는데, 그러기 위해서 나는 먼저 data를 arr, target으로 언팩킹 해주었다. 그 후 리턴값에 사망연산자를 사용하여 문제를 풀었다.

def solution(data):
    arr, target = data
    return arr.index(target) if target in arr else False

 

사망연산자의 개념에 따라 if 문의 조건이 True 이면 앞에 있는  arr.index(target)이 출력되고 그렇지 않다면 else 뒤에 있는 걸 출력해주는 것을 사용하였다.

 

2. 문자열 탐색

문제 설명
문자열과 타겟 문자가 주어집니다. 문자열 내에서 타겟 문자가 처음으로 나타나는 위치(인덱스)를 반환하는 코드를 작성해주세요. 만약 타겟 문자가 문자열 내에 존재하지 않으면 False를 반환합니다.

제한 사항
문자열의 길이는 1 이상 100 이하입니다.
문자열은 오직 영문자(대소문자)로만 구성됩니다.
타겟 문자는 하나의 영문자입니다.

 

입출력 설명
첫 번째 예시에서 타겟 문자 'e'는 문자열 'hello'의 인덱스 1에 위치하므로 1을 반환합니다. 두 번째 예시에서 타겟 문자 'a'는 문자열 'world'에 존재하지 않으므로 False를 반환합니다.

 

앞 문제와 굉장히 유사한 문제였다. 타겟문자가 앞의 문자열에 속해있는지 여부를 판단하고 그렇다면 인덱스를 반환하고 그렇지 않다면 False를 출력하면 되었다.

def solution(data):
    s, target = data
    return s.index(target) if target in s else False

앞의 문제에서 풀었던 방법과 같은 방법으로 문제를 해결했는데 data를 언패킹 해주고 스트링에서 index를 활용해서 target 에서 index를 뽑아 내었다. 만약 target에 값이 존재 하지 않는다면 False를 출력하도록 코드를 작성했다.

 

오늘은 다른 날보다는 무난하게 해결했던 날인 것 같다. 쉬운 것 같지만 조금만 꼬우면 아직 풀 수가 없기에 할 줄 아는건 더욱 견고히 단단히 기억하자 라는 걸 생각하면서 블로그 글을 작성했다.