Day24 조건문 활용, 반복문 활용, 이차원 리스트(배열)

  • 커피 심부름
  • 그림 확대
  • 조건에 맞게 수열 변환하기 3
  • l로 만들기
  • 특별한 2차원 배열 1

커피 심부름

문제 설명

팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.

 

def solution(order):
    answer = 0
    
    for i in order:
        if "latte" in i:
            answer += 5000 
        else:
            answer += 4500
    
    return answer

아이스든 핫이든 상관없이 아메리카노, 아무거나 = 4500 / 라떼 5000

 

이름에 latte 들어가면 +5000원 나머지 +4500


그림 확대

문제 설명

직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

def solution(picture, k):
    answer = []
    for i in picture:
        temp = ''
        
        for j in i:
            temp += j * k
            
        for _ in range(k):
            answer.append(temp)
    return answer

temp에 (문자 * k) 담고 (가로 k배 확대)

temp를 k배 곱한 문자열을 answer에 담는다 (세로 k배대)


조건에 맞게 수열 변환하기 3

문제 설명

정수 배열 arr와 자연수 k가 주어집니다.만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.

 

def solution(arr, k):
    return  [i * k if k % 2 == 1 else i + k for i in arr ]

k 홀수면, k % 2 == 1 , 모든 arr 원소 * k

k 짝수면 , 모든 arr 원소 + k


l로 만들기

문제 설명

알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.

 

def solution(myString):
    for i in myString:
        if ord(i) < ord('l'):
            myString = myString.replace(i, 'l')
    return myString

replace가 문자열 자체는 변경하지 않으며 바뀐 결과를 반환하기 때문에 바뀐 결과를 유지하고 싶다면 할당해줘야 한다.

할당하지 않고 replace만 썼다가 생각대로 안돼서 오잉.. 함

다른 사람 풀이 보니 굳이 ord로 변환하지 않고 비교해도 된다.

def solution(myString):
    for i in myString:
        if i < 'l':
            myString = myString.replace(i, 'l')
    return myString​

 

아님 그냥 이렇게 깡으로 바꿔버리는 것도 .. 나름 신박한 풀이인듯?

def solution(myString):
    return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))

ㅋㅋㅋㅋㅋㅋㅋ


특별한 이차원 배열 1

문제 설명

정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.

arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.

 

def solution(n):
    answer = [[0]*n for _ in range(n)]

    for i in range(n):
        for j in range(n):
            if i == j:
                answer[i][j] = 1
    return answer

계속 안되길래 애꿏은 포문만 건드렸느데 문제는 배열 정의였다 ..
answer = [[0]*n]*n < 이렇게 했는데 모든 행이 동일한 객체를 참조하고 있어서 계속 틀렸던 ..

그리고 포문을 두번이나 쓸 필요도 없었다 ^^

def solution(n):
    answer = [[0]*n for _ in range(n)]
    
    for i in range(n):
        answer[i][i] = 1
    return answer

이차원 배열 자주 안 다루다 보니 .. 헷갈리네


오 그래도 내일 마지막

+ Recent posts