728x90
코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 스쿨 (programmers.co.kr)
레벨 2는 도전해야겠다라고 마음은 먹었지만, 막상 도전하고 2문제 정도 좌절을 겪었다..애석하게도..
그래서 정답률이 높은 레벨2부터 풀어보면서 실력을 천천히 키워보기로..
늘 유념하는 마음이지만
기획단계에서부터 꼼꼼하게 하면 풀이가 훨씬 쉬워진다는 점!
나의 풀이
def solution(s):
i = list(map(int,s.split(" ")))
return str(min(i)) + " " + str(max(i))
# s를 blank로 split한 후 int 상태에서 최댓값과 최솟값 걸러내기
# 걸러낸 후 다시 원상태 str으로 만들기
생각보다 쉽게 풀어서 좋았는데,
다른 분이 쓴 코드를 보고 기겁해서 코드를 해체해서 분석해보려고 했지만..
첫 줄부터 사실 이해가 잘 가지 않아서 일단 공유만 해놓겠다.
s가 문자열인 상태인데 어떻게 조건문에 s[0]가 나올 수 있지..?
숏코딩으로 해결하시는 분들도 대단하지만
이렇게 내장함수 없이 해결하시는 분도 참 대단한 것 같다
다른 분의 풀이
def solution(s):
t = []
if s[0] != "-":
s = "+" + s
for i in range(0, len(s)):
t += [s[i]]
for i in range(0, len(t)):
if t[i] == " " and t[i+1] != "-":
t.insert(i+1, "+")
for i in range(1, len(t)):
if t[len(t)-i] == " " and t[len(t)+1-i] != "-":
t.insert(len(t)+1-i, "+")
break
print(t)
result = []
midcount1 = ""
midcount2 = ""
for i in range(len(t)):
if t[i] == "-":
for j in range(i+1, len(t)):
if t[j] != " ":
midcount1 = midcount1 + t[j]
if j == len(t)-1:
result += [-int(midcount1)]
midcount1 = ""
break
elif t[j] == " ":
print(midcount1)
result += [-int(midcount1)]
midcount1 = ""
break
elif t[i] == "+":
for j in range(i+1, len(t)):
if t[j] != " ":
midcount2 = midcount2 + t[j]
if j == len(t)-1:
result += [int(midcount2)]
midcount2 = ""
break
elif t[j] == " ":
print(midcount2)
result += [int(midcount2)]
midcount2 = ""
break
print(result)
resultmax = int(result[0])
resultmin = int(result[0])
for i in range(len(result)):
if resultmax < result[i]:
resultmax = result[i]
for i in range(len(result)):
if resultmin > result[i]:
resultmin = result[i]
return "%s %s" % (resultmin, resultmax)
'cording test' 카테고리의 다른 글
LV.1 둘만의 암호 (0) | 2023.05.03 |
---|---|
LV.1 비밀지도/ 파이썬 bin함수 / zfill 함수 (0) | 2023.05.02 |
LV.1 피보나치 수 (2) | 2023.04.27 |
삼총사 (0) | 2023.04.25 |
LV.1 숫자 문자열과 영단어 (0) | 2023.04.25 |