728x90
최빈값 구하기
풀이
def solution(array):
count = [0]*(max(array)+1)
for i in array:
count[i] += 1
alot = -1
for i in count:
if alot < i:
alot = i
return count.index(alot) if count.count(alot) == 1 else -1
코딩을 C로 시작한 터라.. 이런 방법밖에는 생각나지 않았다..
array의 최대값 크기만큼 count 배열을 생성한다.
array의 값이 나올 때마다 count 배열의 인덱스에서 +1을 한다.
count 배열의 가장 큰 값이 최빈값이다.
가장 큰 값이 2개 이상이면 -1을 리턴한다.
다른 풀이
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
하... 파이썬은 아는 만큼 보인다 진짜로.. 이게 뭐람
- enumerate() 함수는 리스트를 인덱스와 값을 가진 set으로 바꾼다.
- set(array)로 집합을 만든다. 예를 들어 array가 [80,80,80,9,9]라면 set(array)는 {80,9}가 된다.
- array에서 80과 9를 하나씩 지우면 array에 [80,80,9]가 남는다.
- 같은 방식을 반복하면 array에 [80]만 남고 i에 0, a에 80이 대입된 채 for문이 끝난다.
- [80,9]가 남았다면 i는 1, a에는 9가 대입되어 있을 것이다. 따라서 최빈값이 여러개이므로 -1을 리턴하게 된다.
직각삼각형 출력하기
풀이
n = int(input())
for i in range(1,n+1):
print('*'*i)
처음에 for 문 두 개 써서 풀었는데..ㅎ..
주사위의 개수
풀이
def solution(box, n):
answer = 1
for i in box:
answer *= i//n
return answer
부피를 사용해 계산한다.
i//n은 한 변에 주사위가 몇 개 들어갈 수 있는지를 나타낸다.
세 변에 최대 몇 개가 들어갈 수 있는지 계산하여 곱하면 주사위의 최대 개수가 된다.
다른 풀이
def solution(box, n):
x, y, z = box
return (x // n) * (y // n) * (z // n)
중복된 숫자 개수
풀이
def solution(array, n):
return array.count(n)
count() 함수로 배열에서 해당 원소가 몇개 있는지 리턴할 수 있다.
728x90