일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬 #python #기초 #기본
- #프론트엔드개발자
- #코딩독학 #코딩인강 #코딩배우기 #개발자 #코딩이란 #코딩교육 #프론트엔드부트캠프 #백엔드부트캠프 #국비지원부트캠프 #개발자 #백엔드 #AI부트캠프 #개발자국비지원 #백엔드개발자
- Today
- Total
아자아자 화이팅이닷 !
230831 프로그래머스 문제풀기 본문
* 저주의 숫자 3 문제에서
처음에 열심히 규칙을 찾으려고 노력해서
def solution(n):
for i in range(34):
if n % 3 == 1 and n // 3 == i:
이런식으로 조건들을 나열해서 문제를 풀어보려고 했는데 ,,
규칙이 너무 안보였다 ㅠ ㅠ
그래서 구글링을 했돠 ..!
이 때까진 정말 쉬운문제라고 생각했는데
def solution(n):
answer = 0
for i in range(n):
answer += 1
if answer % 3 == 0 or '3' in str(answer):
answer += 1
return answer
이 코드로도 해결이 안돼서 이 문제에 더 시간을 썼다 ,,
슬프다 흐규 ㅠ

그 래 서 !
def solution(n):
answer = 0
for i in range(n):
answer += 1
if answer % 3 == 0 or '3' in str(answer):
answer += 1
while answer % 3 == 0 or '3' in str(answer):
answer += 1
return answer
이렇게 문제를 해결하였다 !
마지막에 한번 더 계산을 해줘야하는 것이었다 ! 30대로 들어가면 계속 +1을 해줘야하니까 while이 필요 !

* 전국 대회 선발 고사 문제에서
처음에
def solution(rank,attendance):
new = []
new1 = []
for i,a in enumerate(attendance):
if a == "true":
for j,b in enumerate(rank):
new.append(rank[i])
new1 = sorted(new)
return 10000 * new.index(new1[0]) + 100 * new.index(new1[1]) + new.index(new1[2])
이렇게 문제를 해결하려고 했는데 실패하였다 ㅠ
구글링으로 힌트를 얻어
def solution(rank,attendance):
students = sorted([(a,i) for i,a in enumerate(rank)])
answer = []
for a,i in students:
if attendance[i]:
answer.append(i)
if len(answer) == 3:
break
return 10000 * answer[0] + 100 * answer[1] + answer[2]
이렇게 문제를 해결하였다 !
students = sorted([(a,i) for i,a in enumerate(rank)])
이 부분이 나에게는 약간 헉 (⊙o⊙) 한 부분이어똬 ..!
배워가는 너낌 ,,
그런데 아주 간결하게 짜놓은 코드를 발견했다 !
바로
def solution(rank, attendance):
arr = sorted([(x, i) for i, x in enumerate(rank) if attendance[i]])
return arr[0][1] * 10000 + arr[1][1] * 100 + arr[2][1]
W o W !

* 잘라서 배열로 저장하기 문제에서
처음에 나는
def solution(my_str,n):
return [my_str[i*n:(i+1)*n] for i in range(round(len(my_str)/n))]
이렇게 문제를 풀었는데, 두 문제가 해결이 되지 않아서 다시 생각해보았더니,
아예 올림을 해주어야했다 !
올림함수는 ceil()함수인데, 이 함수를 사용할 때에는 import math를 해주고 math.ceil()이라고 써야한다 !
round함수는 반올림함수이고, import를 하지 않아도 된다 !
그래서
import math
def solution(my_str,n):
return [my_str[i*n:(i+1)*n] for i in range(math.ceil(len(my_str)/n))]
이렇게 문제를 해결하였다 !
그런데 내가 문제를 보자마자 뭔가 이렇게 풀면 풀리겠다 싶었던 코드가 있어서 가져와봤다 !
def solution(my_str, n):
return [my_str[i: i + n] for i in range(0, len(my_str), n)]
아주 쉽고 깔끔하다 !
다음엔 이렇게 풀어야쥥 ,,
* 특이한 정렬 문제에서는
def solution(n,numlist):
tmp = sorted([(a,i) for i,a in enumerate(numlist)],reverse=True)
for a,i in tmp:
num = [abs(a-n)]
num = sorted(num)
for j in range(len(num)):
이런식으로 문제를 풀려다가 너무 복잡해질 것 같아서 다른 방법을 생각해보기로 했다 ㅠ
몇번의 실패 끝에 구글링으로 찾아냈지만 ...
여전히 해결이 되지 않은 ...
def solution(n,numlist):
answer = []
for i in numlist:
answer.append(i-n)
result = []
for i in sorted(answer[:], key=lambda x : [abs(x) , -x]):
result.append(numlist[answer.index[i]])
return result
이 코드와
def solution(n, numlist):
# 정렬 기준을 설정하는 함수를 lambda로 정의합니다.
# 거리가 같으면 더 큰 수가 앞으로 오도록 설정합니다.
sorted_list = sorted(numlist, key=lambda x: (abs(x - n), -x))
return sorted_list
이 코드 모두 TypeError: 'int' object is not iterable 이 에러가 나온다 ,,
여기에서 lambda를 사용할 때 참고하면 좋을 링크 !
https://gorokke.tistory.com/38
람다(lambda) 총 정리, key sort, key 정렬
1. 람다(lambda) 1 ) 의미 익명함수를 지칭하는 용어 즉, 기존의 함수(명 등)을 선언하고 사용하던 방식과는 달리 바로 정의하여 사용할 수 있는 함수. 2 ) 형식 : lambda 인자 : 표현식 예시) sum = lambda x:
gorokke.tistory.com
파이썬 마스터하기 : 람다(Lambda) 함수
람다(lambda) 함수는 함수형 프로그래밍에서 중요한 개념 중 하나로, 익명 함수(anonymous function)라고도 부릅니다.
velog.io
이 문제는 내일 다시 도젼 ,,
* 문자열 계산하기 문제에서는
def solution(my_string):
a,b,c = my_string.split(" ")
while b == "+":
return int(a) + int(c)
return int(a) - int(c)
요로케 풀어봤는데 런타임 에러가 많이 나서 실 패 ^ ^ ..
일단 머리가 아파서 오늘은 여기까지 ,,
내일 다시 해보자고 ~!~
화이팅 ~!
'TIL' 카테고리의 다른 글
231016 프로그래머스 문제풀기 (0) | 2023.10.16 |
---|---|
231014 프로그래머스 문제풀기 (0) | 2023.10.14 |
230830 프로그래머스 문제풀기 & 1대1 코칭 (0) | 2023.08.30 |
230828 프로그래머스 문제풀기 (0) | 2023.08.29 |
230824 SQLD 자격증 공부 & 토익공부 (0) | 2023.08.24 |