1. 코딩테스트 연습 - 행렬의 덧셈 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
나의 풀이
def solution(arr1, arr2):
arr=[[],[]]
for i in range(len(arr1)):
if len(arr1[0])==1:
arr[i].append(arr1[i]+arr2[i])
else:
for j in range(len(arr1)):
arr[i][j].append(arr1[i][j]+arr2[i][j])
return arr
arr를 빈 리스트로 초기화 하면 X
모범 답안
def solution(arr1, arr2):
for i in range(len(arr1)):
for j in range(len(arr1[0])):
arr1[i][j]+=arr2[i][j]
return arr1
새로운 리스트 만들지 않고 기존 리스트에 값 추가
2. 코딩테스트 연습 - 직사각형 별찍기 | 프로그래머스 스쿨 (programmers.co.kr)
3. 코딩테스트 연습 - 최대공약수와 최소공배수 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
나의 풀이
.
모범 답안
def solution(n, m):
answer = []
# 최대공약수
for i in range(min(n,m),0,-1):
if n%i ==0 and m%i==0:
answer.append(i)
break
# 최소공배수
for i in range(max(n,m),n*m+1):
if i%n == 0 and i%m == 0:
answer.append(i)
break
return answer
최대공약수 for 범위 주의
4. 코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
나의 풀이
.
모범 답안
def solution(arr):
answer = []
for i in arr:
if answer[-1:] == [i]: continue
answer.append(i)
return answer
i의 값과 마지막으로 넣은 값 비교해서 다르면 삽입
5. 코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
나의 풀이
.
모범 답안
def solution(s):
answer = ''
string = s.split(' ')
for i in string:
for j in range(len(i)):
if j % 2 == 0:
answer += i[j].upper()
else:
answer += i[j].lower()
answer+= ' '
return answer[0:-1]
공백이 2번 연속 나올 것을 고려해서 split을 써도 연속된 공백을 출력하기 어려움이 있어 막혔는데
split()이 아닌 split(' ')을 사용해 한 개 이상의 공백은 보존하고, 마지막에 answer+=' '로 공백을 추가하여 출력하면 된다.
또 split()은 가장 마지막 공백은 고려하지 않으므로 answer[0:-1]으로 직접 제거해야 한다.
'코딩테스트 > programmers (python)' 카테고리의 다른 글
20240115/ programmers/ 1단계/ python (1) | 2024.01.15 |
---|---|
20240114/ programmers/ 1단계/ python (1) | 2024.01.14 |
20240112/ programmers/ 1단계/ python/O (0) | 2024.01.12 |
20240111/ programmers/ 0단계/ python (1) | 2024.01.11 |
20240110/ programmers/ 0단계/ python (0) | 2024.01.10 |