728x90
제일 작은 수 제거하기
문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
입출력 예
문제 발생
def solution(arr):
answer = []
if len(arr)==1:
answer.append(-1)
return answer
min = arr[0]
for i in arr:
if min>i:
min=i
arr.remove(i)
answer = arr
return answer
결국, 다른 분들의 풀이를 찾아보게 됨 ㅠ
비효율적 코드라는 답을 얻음
수정 코드 Solution
def solution(arr):
if len(arr)==1:
return [-1]
arr.remove(min(arr))
return arr
코드를 좀 더 간단하게 씀
Result
없는 숫자 더하기
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
Solution
def solution(numbers):
answer = 0
numbers.sort()
arr = [10 for i in range(10)]
for i in numbers:
arr[i]=i
for i in range(len(arr)):
if arr[i]==10:
answer += i
return answer
코드 설명:
1. 입력받은 숫자 배열을 정렬한다. (사실 정렬은 필요 없음)
2. 10이 10개가 든 숫자 배열 arr을 만든다.
3. for문을 이용하여 0번째 array에는 0, 1번째 array에는 1 이런식으로 입력받은 number 값과 인덱스값이 일치하는 곳을 10 대신 본인을 넣는다.
4. 그러면 찾을 수 없는 숫자는 10으로 그대로 남게 된다. [0, 1, 2, 3, 4, 10, 6, 7, 8, 10]과 같이!
5. for문을 통해 만약 10이 발견되면 return값에 인덱스 값을 더해주면서 없는 숫자를 더한 값을 출력한다. (arr[5] == 10 -> 5를 더함)
Result
[1차] 비밀지도 (2018 KAKAO BLIND RECRUITMENT)
문제 설명
입출력 예
Solution
def solution(n, arr1, arr2):
answer = []
map1 = [[0 for _ in range(n)] for _ in range(n)]
map2 = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
count = 0
div = arr1[i]
if div==0:
continue
while(1): #map1 2진수 표현
if div==1:
map1[i][count]=1
break
div, mod = divmod(div, 2) #(몫, 나머지)
map1[i][count]=mod #나머지 저장
count += 1
map1[i].reverse() #역순으로 저장된 2진수 reverse
for i in range(n):
count = 0
div = arr2[i]
if div==0:
continue
while(1): #map2 2진수 표현
if div==1:
map2[i][count]=1
break
div, mod = divmod(div, 2)
map2[i][count]=mod
count += 1
map2[i].reverse()
for i in range(n):
map = ''
for j in range(n):
if map1[i][j]==0 and map2[i][j]==0:
map += " "
else:
map += "#"
answer.append(map)
return answer
Result
최소직사각
문제 설명
Solution
def solution(sizes):
answer = 0
max1 = []
max2 = []
for i in sizes:
max1.append(max(i)) #직사각형 가로, 세로 중 max만 저장
max2.append(min(i)) #직사각형 가로, 세로 중 min만 저장
answer = max(max1)*max(max2) #max1 중, 가장 큰 값과 max2 중, 가장 큰 값으로 지갑 만들면 됨
return answer
Result
728x90
'Python > 코딩테스트' 카테고리의 다른 글
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 두 번째 주) (0) | 2023.06.10 |
---|---|
[프로그래머스/python] 코딩테스트 연습 Lv.1 (6월 첫 번째 주) (1) | 2023.06.06 |
[프로그래머스/python] 코딩테스트 입문 3주차 (5월 세 번째 주) (0) | 2023.05.20 |
[프로그래머스/python] 코딩테스트 입문 1주차 (5월 첫 번째 주) (0) | 2023.05.06 |
[프로그래머스/python] 코딩테스트 입문 0주차 (4월 마지막 주) (0) | 2023.05.03 |