코딩테스트

프로그래머스 - 숫자 찾기/문자열 정렬하기(2)/머쓱이보다 키 큰 사람

sogummi 2023. 4. 3. 15:26

1. 숫자 찾기

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

#제한사항
0 < num < 1,000,000
0 ≤ k < 10
num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

#입출력 예
num	    k  result
29183	1	 3
232443	4	 4
123456	7	-1
def solution(num, k):  # 정수
    answer = str(num).find(str(k))
    if answer == -1:
        return -1
    return answer + 1
    
    return answer

 정수를 문자열로 변환 후 find()함수로 k가 처음 등장하는 인덱스를 반환하게 했다. 출력예시에서는 인덱스 위치를 각 +1해주지만, k가 num에 있지 않을 경우 if문을 써서 -1을 그대로 반환하도록 작성 

2. 문자열 정렬하기(2)

#문제 설명
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.

#제한사항
0 < my_string 길이 < 100

#입출력 예
my_string     result
"Bcad"	      "abcd"
"heLLo"	     "ehllo"
"Python"    "hnopty"
def solution(my_string): #대소문자 문자열 
    
    return(''.join(sorted(my_string.lower())))

=>my_string은 문자열로 시작하여 lower함수로 모든 문자열 소문자로 변환.
sorted()함수 사용하여 정렬된 리스트 형태로 join함수에 바로 전달하여 리스트를 문자열로 변환

*sort()대신 sorted()를 쓴 이유? 
-> 파이썬 문자열 자료형은 immutable(불변)자료형. 한 번 생성된 문자열을 변경할 수 없기에 원본 리스트를 변경해버리는 sort()함수는 문자열에서 호출 불가하며, sorted()함수는 문자열을 변경하지 않고 새로운 정렬된 리스트를 반환!!
이렇게 때문에 sorted()함수는 문자열 정렬 시 유용하게 사용가능 하다. 

3. 머쓱이보다 키 큰 사람 

#문제 설명
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

#제한사항
1 ≤ array의 길이 ≤ 100
1 ≤ height ≤ 200
1 ≤ array의 원소 ≤ 200

#입출력 예
array                 	height        result
[149, 180, 192, 170]	  167	         3
[180, 120, 140]	          190	         0
def solution(array, height): #반 전체의 키 값 배열(정수), 머쓱이 키(정수) 
    answer = 0
    for i in array:
        if i > height:
            answer += 1
    
    return answer