[프로그래머스] 스킬 체크 LEVEL 1

한지원·2021년 3월 7일
1

문제 1

문자열 s를 입력받아 p와 y의 개수(대, 소문자 구분 안함)가 같다면 True, 다르다면 False를 리턴

def solution(s):
    p_cnt = 0
    y_cnt = 0
    for i in s:
        if i == 'p' or i == 'P':
            p_cnt += 1
        elif i == 'y' or i == 'Y':
            y_cnt += 1
    
    if p_cnt == y_cnt:
        return True
    else: return False

for문을 통해 문자열 s의 문자 하나하나를 i에 대입하여 해당 문자가 p(P)일땐 p_cnt, y(Y)일땐 y_cnt를 1씩 더해
p_cnt와 y_cnt가 같다면 True, 다르다면 False를 리턴하도록 했다.

문제2

문자열로 된 배열 strings와 정수 n을 입력받아 strings 안의 각 문자열에서 인덱스 n의 알파벳 순서로 strings를 재정렬하고 만약 인덱스 n의 알파벳이 같다면 문자열의 오름차순으로 정렬하여 재정렬 된 문자열 리턴

def solution(strings, n):
    answer = []
    strings.sort()
    answer = sorted(strings, key=lambda x : x[n])
    return answer

처음에 각 문자열의 n번째 알파벳이 같을 때 문자열 전체의 오름차순으로 정렬하는 것을 생각하지 못하고 strings.sort()를 넣지 않았다.

배열을 문자열의 오름차순으로 sort해준 뒤 lambda식을 이용해서 인덱스 n의 오름차순으로 정렬해주면 문제에서 요구하는 답이 나온다.

0개의 댓글