일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
아자아자 화이팅이닷 !
230801 프로그래머스 문제풀기 본문
벌써 8월이다 ...
시간 너무 빠르다 ㅠ 화이팅 ~!~
스터디에서 정해준 기한이 내일까지이기 때문에 오늘 TIL은 간략하게 진행해 볼 예정이닷 ..!
* 인덱스 바꾸기 문제에서
# num1과 num2에 해당하는 문자를 슬라이싱하여 추출
char1 = my_string[num1]
char2 = my_string[num2]
이 작업을 했어야 문제를 쉽게 풀 수 있었다 !
def solution(my_string, num1, num2):
s = list(my_string)
s[num1],s[num2] = s[num2],s[num1]
return ''.join(s)
이렇게 list를 만들어주고 푸는 방법도 있다 !
* 가까운 1 찾기 문제에서
나는
def solution(arr,idx):
for i in range(len(arr)):
if arr[i] == 1:
if i > idx:
return i
elif i == idx:
return i
return -1
이렇게 코드를 짰는데,
def solution(arr, idx):
for i in range(idx, len(arr)):
if arr[i] == 1:
return i
return -1
이렇게 더 간단하게 코드를 짤 수 있었다 !
* 두 수의 연산값 비교하기 문제에서
나는
def solution(a,b):
return int(str(a) + str(b)) if int(str(a) + str(b)) > 2*a*b else (int(str(a) + str(b)) if int(str(a) + str(b)) == 2*a*b else 2*a*b)
이렇게 코드를 짰는데,
max()함수를 이용하여 더 간단하게 짤 수 있는 방법이 있었다.
def solution(a, b):
return max(int(str(a) + str(b)), 2 * a * b)
* 간단한 식 계산하기 문제에서
다른 분들이 eval()함수를 사용해서 아주 간단하게 문제를 푸셨다 !
eval()함수에 대한 설명은
[Python] 파이썬 eval() 함수 사용법 및 예제
파이썬은 eval()이라는 함수를 지원한다. 파이썬의 eval() 함수는 문자열로 표현되는 표현식(expression)을 실행해서 결과값을 받아오는 함수다. 예를 들어보자. exp = "1 + 2" result = eval(exp) print(result) # 3
hbase.tistory.com
을 참고하면 좋을 것 같다 !
* 피자 나눠 먹기 문제에서는
소인수분해를 해야할지 어떻게 쉽게 해결할 수 있을지 감이 안와서 검색을 했다.
그 결과
def solution(n):
pizza = 1
while (pizza*6) % n != 0:
pizza += 1
return pizza
이렇게 하면 답이 나왔다 !
* 접미사 배열 문제에서
처음에는 어떻게 풀어야할지 막막했는데 GPT에게 힌트를 얻어서 문제를 해결했다 !
GPT도 오류가 많아서 ㅋㅋ ㅠ 힌트를 얻어서 푸는 문제들도 꽤 있는 것 같다 (*^▽^*)
그래서 이 문제는
def solution(my_string):
answer = []
for i in range(len(my_string)):
answer.append(my_string[-i:])
answer.sort()
return answer
이렇게 풀었는데,
사실 그냥
def solution(my_string):
return sorted(my_string[i:] for i in range(len(my_string)))
이렇게 풀어도 상관없을듯 ㅋ ㅜ
후엥 ,,~ 그래도 배워간다 . . .
* 특별한 이차원 배열 1 문제에서
어떻게 풀어야 할지 감이 안와서 고민하다가 검색을 했다 ㅠ
def solution(n):
return [[1 if i == j else 0 for i in range(n)] for j in range(n)]
이렇게 풀면 되는데,
i를 돌리는 for문을 []안에 넣어주고 / 밖에 j를 돌리는 for문을 넣어준게 신기했다 !
저렇게 해도 되는구낭 ,,
* 문자열 잘라서 정렬하기 문제에서도
반대로 생각해보는 작업이 필요하다 !
i가 ""가 아닐때를 생각해보면 쉽다 !
* 주사위 게임 2 문제에서
좋은 답을 발견해서 가져왔다 !
def solution(a, b, c):
answer=a+b+c
if a==b or b==c or a==c: answer*=a**2+b**2+c**2
if a==b==c:answer*=a**3+b**3+c**3
return answer
깔 끔 하 다 !

* 배열 만들기 3 문제에서는
first_interval = intervals[0]
second_interval = intervals[1]
이렇게 값을 먼저 주는것이 중요하다 !
아니면
s1, e1 = intervals[0]
s2, e2 = intervals[1]
이렇게 줘도 되고,
아예
def solution(arr, intervals):
return arr[intervals[0][0]:intervals[0][1] + 1] + arr[intervals[1][0]:intervals[1][1] + 1]
이렇게 바로 코드를 짜도 된다 !
* 369게임 문제에서
order을 for문으로 돌릴때 str(order) 해주면 된다는 것을 기억해야됨 !
그리고 i in '369'를 하면 쉽게 해결된다 !
* 수 조작하기 2 문제에서는
for i in range(1, len(numLog)):
diff = numLog[i] - numLog[i-1] # 현재 값과 이전 값의 차이를 계산
이 부분만 잘 파악하면 문제가 쉽게 풀린다 !
* 합성수 찾기 문제에서
계속 고민을 하다가 GPT에게 물어봤는데, 함수를 두개 정의해 주어야했다 ,,
이 코드를 이해하는데에 시간이 좀 들었지만 완벽히 이해했다 !
그런데 굳이 def를 두개 만들지 않아도
for문을 두개 돌리고
if i % j == 0:
output += 1
를 해주면 더 간단히 해결되는 코드가 있었다 ...
나에겐 좀 어려운 문제여따 ㅠ
* 문자열 섞기 문제에서
나는 if else문과 continue를 사용하는 코드를 짰는데,
str1과 str2의 길이가 같다는 점을 이용해서 더 간단하게 짜는 코드가 있었다 ㅠ
for i in range(0,len(str1)):
answer = answer + str1[i] + str2[i]
그냥 이렇게 해주면 끝 ㅠ
continue를 사용하려고 했을때 break와 헷갈렸는데, 둘의 차이는 이렇다 !
<GPT 설명>
- continue:
- continue 문은 반복문(주로 for 또는 while 문) 안에서 사용되며, 현재 반복을 중지하고 다음 반복으로 건너뛰는 데 사용됩니다.
- 즉, continue 문이 실행되면 현재의 반복 실행을 중단하고, 다음 반복으로 진행됩니다.
- 반복문의 다음 반복으로 건너뛰기 위해 사용됩니다.
- continue 문이 실행되면 반복문의 나머지 부분은 실행되지 않고, 다음 반복이 시작됩니다.
예시:
for i in range(1, 6):
if i == 3:
continue
print(i)
출력 결과 : 1 2 4 5
- break:
- break 문은 반복문(주로 for 또는 while 문) 안에서 사용되며, 반복문을 완전히 종료하는 데 사용됩니다.
- 즉, break 문이 실행되면 반복문을 더 이상 실행하지 않고 반복문을 완전히 종료합니다.
- 특정 조건을 만족하면 반복문을 중단해야 할 때 사용됩니다.
예시:
for i in range(1, 6):
if i == 3:
break
print(i)
출력 결과: 1 2
* 2차원으로 만들기 문제에서
거의 다 코드를 짰는데 너무 어렵게 생각하려고 해서 자꾸 마무리가 잘 안 맺어지는 것 같다 ㅠ
좀 쉽게 쉽게 생각하려고 하는 노력을 더 해야할 것 같다 ㅠ
num_list[i:i+n] 이걸 append하면 됐던 쉬운 문제였다 ㅠ
* 등차수열의 특정한 항만 구하기 문제에서
if included[i] == True:
를 하지 않아도
int(included[i])
이렇게 조건을 주면 더 간략하게 코드를 짤 수 있다 !
* 날짜 비교하기 문제에서
나는 if elif문을 사용해서 풀었는데,
def solution(date1, date2):
return int(date1 < date2)
이렇게 리스트끼리의 비교가 가능하다는걸 알았다 ...
역시 고수들은 ...

* 팩토리얼 문제는
계속 오류가 나서 GPT에게 물어보았는데,
정말 뭔가 생각의 폭을 키워야겠다는 생각이 들었다 ㅋㅋ ㅠ
def solution(n):
i = 1
factorial = 1
while factorial <= n:
i += 1
factorial *= i
return i-1
생각치 못한 답이어서 놀람 ㅠ
대 다 내 ,,~
* A로 B 만들기 문제에서는
계속 시도를 해보다가 오류가 나서 힌트를 얻으려고 검색을 해봤는데 너무 대단한걸 봐버렸다 ..
sorted()함수를 써주고 비교를 해주면 너무 깔끔하고 간결하게 해결이 되었다 ...
대박ㄱ수 ....

* k의 개수 문제에서는
if str(k) in str(a):
answer += str(a).count(str(k))
이게 핵심이다.
여기에서는 count()함수를 알아야 한다는거 !
오늘은 여기까지 ㅠ
힘둘다 ㅠ
하지만 화이팅이다 !
오늘은 30개 클리어 ,,~
'TIL' 카테고리의 다른 글
230804 프로그래머스 문제풀기 + 공부 (0) | 2023.08.05 |
---|---|
230802 프로그래머스 문제풀기 (0) | 2023.08.02 |
230731 프로그래머스 문제풀기 (0) | 2023.08.01 |
230730 프로그래머스 문제풀기 (1) | 2023.07.31 |
230729 오프라인 스터디 & 프로그래머스 문제풀기 (0) | 2023.07.30 |