IT 세계의 후아
[python]조건문 본문
if-else문 관련 문제 풀이
# 프로그래머스 조건 문자열
def solution(ineq, eq, n, m):
if ineq == '>':
if eq == '=': return int(n >= m)
else: return int(n > m)
else:
if eq == '=': return int(n <= m)
else: return int(n < m)
return
# 다른 풀이 - eval, replace 활용 기억하기!
# return int(eval(str(n) + ineq + eq.replace('!', '') + str(m)))
# 프로그래머스 주사위 게임2
# 세 개의 값이 다 같을 때, 두 개만 같을 때, 다 다를 때
def solution(a, b, c):
x = a + b + c
y = a*a + b*b + c*c
z = a*a*a + b*b*b + c*c*c
if a != b and a != c and b != c: return x
elif a == b and a == c and b == c: return x * y * z
else: return x * y
return
# 다른 사람 풀이
# check = len(set([a,b,c]))
# if check == 1, elif check == 2, else인 경우로 나눠서 풀이
+while문 안에서 작성할 땐, 굳이 if-else 요약문으로 쓰지 않기!
=> 오히려 runtime 오래 걸려서 시간 초과됨...
# 프로그래머스 콜라츠 수열
# 초반 풀이 - 시간 초과ㅠㅡㅠ
def solution(n):
answer = []
while n > 1:
answer.append(n/2 if n%2 == 0 else 3*n + 1)
print(answer)
answer.append(1)
return answer
# 수정 후
answer = []
while n > 1:
answer.append(n)
if n%2 == 0:
n /= 2
else:
n = 3*n + 1
answer.append(1)
return answer
# 다른 사람 풀이
answer = [n]
while n!=1:
if n%2:n=3*n+1
else: n//=2
answer.append(n)
return answer
+주사위 경우의 수 문제
리스트.count(요소) 잘 활용하기!!!
# 프로그래머스 주사위게임3
def solution(a, b, c, d):
li = [a, b, c, d]
tot = set(li) # 중복 없는 {}
p = int(list(tot)[0])
if len(tot) == 1: return p*1111
elif len(tot) == 2:
q = int(list(tot)[1])
if li.count(p) == 2: # p2, q2
return (p+q)*abs(p-q)
elif li.count(p) == 3: # p3, q
return (10*p+q)**2
else: # q3, p
return (10*q+p)**2
elif len(tot) == 3:
q = int(list(tot)[1])
r = int(list(tot)[2])
if li.count(p) == 2: # p2, q, r
return q*r
elif li.count(q) == 2: # p, q2, r
return p*r
else: # p, q, r2
return p*q
else: # p, q, r, s
return min(li)
return
# 다른 사람 풀이
def solution(a, b, c, d):
l = [a,b,c,d]
c = [l.count(x) for x in l]
if max(c) == 4:
return 1111 * a
elif max(c) == 3:
return (10 * l[c.index(3)] + l[c.index(1)])**2
elif max(c) == 2:
if min(c) == 1:
return eval('*'.join([str(l[i]) for i, x in enumerate(c) if x == 1]))
else:
return (max(l) + min(l)) * abs(max(l) - min(l))
else:
return min(l)
'Coding > Python' 카테고리의 다른 글
[python]리스트 값 추가, 삭제/요소 곱 - reduce, prod) (0) | 2024.04.17 |
---|---|
[python]문자열 인덱싱 (0) | 2024.04.17 |
[python]join 함수 (0) | 2024.04.17 |
[python]문자열 replace (0) | 2024.04.16 |
[python]대소문자 함수-upper, lower, swapcase, isupper (0) | 2024.04.16 |