[코딩 기초 트레이닝]Day24 조건문 활용, 반복문 활용, 이차원 리스트(배열)
커피 심부름
문제 설명
팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 “아무거나”를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.
각 직원이 적은 메뉴가 문자열 배열 order
로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order
의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.
order의 원소 | 의미 |
---|---|
“iceamericano”, “americanoice” | 차가운 아메리카노 |
“hotamericano”, “americanohot” | 따뜻한 아메리카노 |
“icecafelatte”, “cafelatteice” | 차가운 카페 라테 |
“hotcafelatte”, “cafelattehot” | 따뜻한 카페 라테 |
“americano” | 아메리카노 |
“cafelatte” | 카페 라테 |
“anything” | 아무거나 |
제한사항
- 1 ≤
order
의 길이 ≤ 1,000
입출력 예
order | result |
---|---|
[“cafelatte”, “americanoice”, “hotcafelatte”, “anything”] | 19000 |
[“americanoice”, “americano”, “iceamericano”] | 13500 |
solution
def solution(order):
A = 0
B = 0
for i in order:
A += i.count("americano") + i.count("anything")
B += i.count("cafelatte")
return 4500*A + 5000*B
-----------------------------------------------------------
def solution(order):
answer=0
for i in order:
if "latte" in i: answer+=5000
else: answer+=4500
return answer
그림 확대
문제 설명
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture
과 정수 k
가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k
배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
picture
의 길이 ≤ 20 - 1 ≤
picture
의 원소의 길이 ≤ 20 - 모든
picture
의 원소의 길이는 같습니다. picture
의 원소는 ‘.’과 ‘x’로 이루어져 있습니다.- 1 ≤
k
≤ 10
입출력 예
picture | k | result |
---|---|---|
[“.xx…xx.”, “x..x.x..x”, “x…x…x”, “.x…..x.”, “..x…x..”, “…x.x…”, “….x….”] | 2 | [”..xxxx……xxxx..”, “..xxxx……xxxx..”, “xx….xx..xx….xx”, “xx….xx..xx….xx”, “xx……xx……xx”, “xx……xx……xx”, “..xx……….xx..”, “..xx……….xx..”, “….xx……xx….”, “….xx……xx….”, “……xx..xx……”, “……xx..xx……”, “……..xx……..”, “……..xx……..”] |
[“x.x”, “.x.”, “x.x”] | 3 | [“xxx…xxx”, “xxx…xxx”, “xxx…xxx”, “…xxx…”, “…xxx…”, “…xxx…”, “xxx…xxx”, “xxx…xxx”, “xxx…xxx”] |
solution
def solution(picture, k):
new = []
new2 = []
for i in picture:
a = 0
while a < k:
new.append(i)
a += 1
new = new
for i in new:
news = ''
for b in i:
news += b*k
new2.append(news)
return new2
----------------------------------------
def solution(picture, k):
answer = []
for i in picture:
add = ''
for j in i:
add+= j * k
for u in range(k):
answer.append(add)
return answer
문제 푸는데 시간이 좀 걸렸습니다. 반복의 범위를 생각하는 것이 헷깔립니다.
조건에 맞게 수열 변환하기 3
문제 설명
정수 배열 arr
와 자연수 k
가 주어집니다.
만약 k
가 홀수라면 arr
의 모든 원소에 k
를 곱하고, k
가 짝수라면 arr
의 모든 원소에 k
를 더합니다.
이러한 변환을 마친 후의 arr
를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤
arr
의 길이 ≤ 1,000,000- 1 ≤
arr
의 원소의 값 ≤ 100
- 1 ≤
- 1 ≤
k
≤ 100
입출력 예
arr | k | result |
---|---|---|
[1, 2, 3, 100, 99, 98] | 3 | [3, 6, 9, 300, 297, 294] |
[1, 2, 3, 100, 99, 98] | 2 | [3, 4, 5, 102, 101, 100] |
solution
def solution(arr, k):
new = []
for i in arr:
if k % 2 == 1:
new.append(i*k)
else:
new.append(i+k)
return new
-----------------------------------------
def solution(arr, k):
return [i*k if k%2!=0 else i+k for i in arr]
I로 만들기
문제 설명
알파벳 소문자로 이루어진 문자열 myString
이 주어집니다. 알파벳 순서에서 “l”보다 앞서는 모든 문자를 “l”로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤
myString
≤ 100,000myString
은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
myString | result |
---|---|
“abcdevwxyz” | “lllllvwxyz” |
“jjnnllkkmm” | “llnnllllmm” |
solution
def solution(myString):
new = ''
for i in myString:
if ord(i) <= ord("l"):
new += "l"
else:
new += i
return new
-------------------------------------------------------
def solution(myString):
answer = [x if x > 'l' else 'l' for x in myString]
return ''.join(answer)
-------------------------------------------------------
#다른 풀이를 보고 다시 작성해봤습니다.
def solution(myString):
new = ''
for i in myString:
if i < "l":
new += 'l'
else:
new += i
print(new)
📌 알파벳도 작다 크다가 적용됩니다.
특별한 이차원 배열 1
문제 설명
정수 n
이 매개변수로 주어질 때, 다음과 같은 n
× n
크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.
- arr[i][j] (0 ≤ i, j <
n
)의 값은 i = j라면 1, 아니라면 0입니다.
제한사항
- 1 ≤
n
≤ 100
입출력 예
n | result |
---|---|
3 | [[1, 0, 0], [0, 1, 0], [0, 0, 1]] |
6 | [[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1]] |
1 | [[1]] |
solution
def solution(n):
new = []
for i in range(n):
news = []
for j in range(n):
if i == j:
news.append(1)
else:
news.append(0)
new.append(news)
return new
----------------------------------------------
def solution(n):
answer=[[0]*n for i in range(n)]
for i in range(n): answer[i][i]=1
return answer
‘builtin_function_or_method’ object is not subscriptable’
이 오류는 객체가 [ ] 연산자를 이용할 수 없다는 뜻입니다. 알맞은 연산자를 사용했는지 확인을 해야합니다.
처음에 생성할 때 배열의 i, j가 같은 경우에만 1을 출력한다는 표현과 n x n의 형태라는 것을 생각해서 해당 순서때 출력해서 저장하는 식을 생각해서 위와 같이 구성했습니다.
다른 풀이를 살펴보면 애초에 0으로 구성된 n x n의 이차원 배열을 생성하고 이 안에서 인덱싱을 사용해서 반환해줬습니다.
댓글남기기