알고리즘 4일차 level.1 임에도 불구하고 점점 어려워진다. 문제를 이해하는 것도 어려워지고 시간도 길어지며 오류가 잦아졌다. 또 코드실행에서는 문제가 없이 통과되지만 제출하기를 누르면 실패가 뜬다.
할 수 없이 앞으로 40번 문제까지는 너무 어렵지않고 내 수준의 답안을 검색하고 보고 최대한 이해해보려 한다.
def solution(arr):
if len(arr) <= 1:
arr = [-1]
else:
arr.pop(arr.index(min(arr)))
return arr
나는 del을 이용해 제거하려 했지만 제출하기 실패로 떳다. 위 코드는 arr len이 1일 때 -1를 넣어주고 아닐 시 arr에 pop을 이용하고 index로 arr에 min을 받아와 처리해줬다.
def solution(num):
answer = 0
while num != 1:
if num % 2 == 0:
num = num // 2
else:
num = 3*num+1
answer += 1
if answer > 500:
answer = -1
break
return answer
function solution(num) {
var answer = 0;
while(num != 1){
if(num % 2 ==0){
num = num /2
}
else{
num = 3*num+1
}
answer += 1
if(answer >500){
answer = -1
break
}
}
return answer;
}
위 문제는 어떻게 꾸역꾸역 풀어봤다. 맨 처음 while을 사용하는 법이 생각나지 않아 시간을 엄청 보냈다. while이 끝나면 answer에 +1 을 해주고 500이상 될 시 탈출후 return 해주는 코드다.
def solution(x):
answer = True
sum_num = 0
for i in str(x):
sum_num+=int(i)
if x%sum_num == 0:
answer
else:
answer = False
return answer
유일하게 어렵지 않았던 문제
삼진법 뒤집기
https://programmers.co.kr/learn/courses/30/lessons/68935
위 문제는 왠지 풀 수 있을거 같아서 내일 한번 풀어보겠음
최소 직사각형
https://programmers.co.kr/learn/courses/30/lessons/86491
def solution(sizes):
l = []
s = []
for i in range(len(sizes)):
if sizes[i][0] >= sizes[i][1]:
l.append(sizes[i][0])
s.append(sizes[i][1])
else:
l.append(sizes[i][1])
s.append(sizes[i][0])
answer = max(l) * max(s)
return answer
문제를 이해하는데 많이 어려웠다. 답안을 보니 너무 간단하더라.
같은 숫자는 싫어
https://programmers.co.kr/learn/courses/30/lessons/12906?language=javascript
def solution(arr):
answer = []
preValue = -50
for i in arr:
if preValue != i:
answer.append(i)
preValue = i;
return answer
print('Hello Python')
return answer
처음 접할 때 문제를 이해하는데 시간을 많이 썼다. arr 첫 번째 요소를 받아온 다음 그 값을 저장해주고 다시 그 값과 arr 두 번째 요소와 비교 같지 않을 때만 answer에다 넣어준다.
두개 뽑아서 더하기
https://programmers.co.kr/learn/courses/30/lessons/68644
def solution(numbers):
answer = []
for i in range(len(numbers)-1):
for j in range(i+1,len(numbers)):
n = numbers[i]+numbers[j]
if n not in answer:
answer.append(n)
answer.sort()
return answer
2중 for가 나오면 헷갈린다. 더 공부하자
이제 문제의 난이도가 높아졌다. 1~2일차에는 그래도 그럭저럭 풀 수 있는 문제가 많았는데 이제는 문제를 이해하는 것도 버겁다. 시간도 오래걸리고 코드제출에 실패도 많이 뜬다.
알고리즘을 다시 공부할까 아니면 답안을 보고 이해할까 고민이 많다. 화이팅