1. 이상한 문자 만들기
def solution(s):
answer = ''
word_list = []
for str in s.split(" "):
string_list = []
for i in range(len(str)):
if i % 2 == 0:
string_list.append(str[i].upper())
else:
string_list.append(str[i].lower())
word_list.append(''.join(string_list))
answer = ' '.join(word_list)
return answer
띄어쓰기를 기준으로 단어를 나누고, 각 단어의 홀수 번째 문자는 소문자, 짝수 번째 문자는 대문자로 바꾸어야 한다. 이를 위해 먼저 문장을 나눈 단어들을 넣을 빈 배열인 word_list를 만들어 둔다. split으로 문장 s를 띄어쓰기를 기준으로 나누고, 그 모든 원소, 즉 각각의 단어를 다시 쪼개기 위해, string_list를 만들고 다시 한 번 for 문을 입력한다. 각각의 글자의 인덱스를 2로 나눈 나머지가 0인 경우, 해당 글자를 upper를 이용해 대문자로 만든 뒤 string_list에 넣고, 나머지는 lower을 이용해 소문자로 만들어 string_list에 넣는다. 이를 진행하면 string_list에는, 해당 요소의 인덱스가 짝수인지 홀수인지에 따라 대문자, 소문자로 변경된 상태로 입력된다. 이것들을 ''.join() 매소드로 구분자 없는 하나의 문자로 만들어 word_list에 입력하고, 첫 번째 반복문을 통해 모든 단어에 대해 이를 반복하면 word_list에는 '이상한 문자' 상태인 단어들이 요소로 들어가게 될 것이다. 이를 띄어쓰기가 적용된 하나의 문장으로 다시 변환하기 위해, ' '.join() 매소드를 이용한다.
2. 행렬의 덧셈
def solution(arr1, arr2):
answer = []
for inner_arrs in arr1:
inner_answer = []
for i in range(len(inner_arrs)):
inner_answer.append(inner_arrs[i] + arr2[arr1.index(inner_arrs)][i])
answer.append(inner_answer)
return answer
주어진 행렬 arr1과 arr2는 같은 인덱스를 가진 요소들끼리만 더하여 새로운 행렬을 반환해야 한다. 주어진 행렬은 이차원 배열이므로 배열의 요소의 요소에 접근하기 위해, 한 배열의 요소인 배열(inner_arrs) 각각에 대해 for문을 적용한다. inner_arrs의 모든 인덱스에 대한 값과, 이에 대응하는 arr2의 값을 더하기 위해 index 매소드를 이용한다. arr1.index(inner_arrs)을 작성하여 현재 반복 중인 inner_arrs의 인덱스를 받고, 이를 arr2에서 찾아 계산하는 것이다. 이를 최종적으로 inner_answer에 추가하면, 배열 arr1, arr2의 요소인 배열들은 덧셈이 완료된 상태가 된다. 이를 다시 배열로 반환하기 위해 answer에 추가해 주면 행렬의 덧셈이 완료된다.
3. 예산
def solution(d, budget):
answer = 0
while min(d) <= budget:
budget -= min(d)
answer += 1
d.remove(min(d))
if len(d) == 0:
break
return answer
주어진 예산 budget에서, 신청된 예산의 배열인 d의 최솟값부터 빼 나갈 것이므로, budget이 min(d)보다 작거나 같은 한 계속 반복하도록 while문을 이용한다. 가장 적게 신청된 예산인 min(d)를 budget에서 뺀 후 answer에는 1을 더한다. min(d)는 예산을 받았으므로 d에서 제외하고 나면, 예산을 받지 못한 나머지 d들로 while문이 다시 반복된다. 이것을 계속 반복하여 answer을 구하면 되는데, 모든 부서에 예산을 할당하여 d가 빈 배열이 되는 경우에는 오류가 발생하므로, len(d) == 0이 되면 break를 걸어 준다.
[Python] Programmers lv1 3진법 뒤집기, 체육복 (0) | 2021.05.25 |
---|---|
[Python] Programmers lv1 포켓몬, 음양 더하기, 로또의 최고 순위와 최저 순위 (0) | 2021.05.22 |
[Python] Programmers lv1 제일 작은 수 제거하기, 정수 내림차순으로 배치하기, 최대공약수와 최소공배수 (0) | 2021.05.15 |
[Python] Programmers lv1 콜라츠 추측, 정수 제곱근 판별, 자연수 뒤집어 배열로 만들기, x만큼 간격이 있는 n개의 숫자 (0) | 2021.05.14 |
[Python] Programmers lv1 핸드폰 번호 가리기, 하샤드 수, 자릿수 더하기 (0) | 2021.05.13 |
댓글 영역