-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[정렬] 3월 7일 #1
[정렬] 3월 7일 #1
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요!
7문제 모두 푸느라 너무너무 수고하셨어요.
열심히 풀어 주신 게 마구마구 느껴졌어요 ❤️❤️
제가 p1, p2 체크하고 힌트 부분 고려해서 다시 한번 풀어 보세요!! 특히 1026번은 꼬옥 함께 다시 풀어 봐요!! 10804번도 슬라이싱에 대해 알아보면서 다시 풀어 보면 도움이 많이 될 거 같아요.
전반적으로 드리고 싶은 피드백은,
- 튜플의 사용에 대해서 생각해 보세요! 알고리즘 문제를 풀 때는 리스트를 활용하는 경우가 훨씬!! 많답니다.
- import.sys 를 이용해서 빠르게 input을 받을 경우, input 자체를 sys 로 대체할 수 있는 방법이 있을 거 같아요. 어떻게 하면 좋을까요?
- 이건 정말 중요한 건데, 파이썬에서 객체의 이름을 재사용하지 말아 주세요! 같은 것으로 간주해서 치명적인 오류를 일으킬 수 있어요.
- 코드가 길어지면 오타나 사소한 디테일에서 오류가 생길 확률이 높아져요. 최대한 어떻게 간결하게 풀 수 있을까? 를 생각해 보는 것도 큰 도움이 돼요.
문제 푸느라 고생하셨어요!! 파이팅!! 좋은 하루 되세요 🍀🍀
03월 04일 - 정렬/1026.py
Outdated
s+=a[i]*b[i] | ||
return s | ||
|
||
def b_order(b,n): #b의 크기 순위 리스트를 반환하는 함수 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p1
문제의 조건을 잘 생각해 보면, b_order 함수를 쓰지 않고도 간편하게 풀 수 있을 것 같아요.
S의 값을 출력해야 한다는 점을 생각하세요!
03월 04일 - 정렬/1026.py
Outdated
return arr | ||
|
||
n=int(input()) #배열의 길이 | ||
a_sorted=[] #정렬된 a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정렬된 a를 저장하는 새로운 리스트가 또 필요할까요?
불필요한 선언은 메모리를 낭비해요 😿😿
03월 04일 - 정렬/1026.py
Outdated
n=int(input()) #배열의 길이 | ||
a_sorted=[] #정렬된 a | ||
a=list(map(int,input().split())) | ||
b=tuple(map(int,input().split())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p1
b를 tuple으로 선언하였기 때문에 코드가 전반적으로 비효율적이에요!!
문제 조건에서는 b의 재배열을 허용하지 않았지만,
출력값이 S의 최솟값이므로 b가 재배열되어도 상관 없다는 점을 고려하면,
b는 tuple이 아니라 다른 자료형으로 선언되어야 효율적이 될 거 같네요! 😿
어떤 자료형으로 선언되어야 할까요?
(힌트! 문제를 풀 때, A와 B의 속성을 다르게 고려해야 할까요?)
03월 04일 - 정렬/1026.py
Outdated
a_sorted=[] #정렬된 a | ||
a=list(map(int,input().split())) | ||
b=tuple(map(int,input().split())) | ||
b_order=b_order(b,n) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
마찬가지로 b의 자료형을 바꾸면 b_order 이라는 새로운 함수 및 변수를 생성해 주지 않아도 돼요.
p1 함수와 변수명은 다르게 만들어 주세요!
03월 04일 - 정렬/1026.py
Outdated
#b의 순위에 맞춰 a 정렬 | ||
a.sort() | ||
for i in range(n): | ||
a_sorted.append(a[b_order[i]]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 a_sorted를 쓰지 않고, a와 b만으로 풀 수 있어요!!
data.append(input()) | ||
|
||
data.sort() #사전순 정렬 | ||
data.sort(key=lambda x:(len(x),sum_string(x))) #시리얼 내 숫자 기준 정렬 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lambda 함수도 적절하게 잘 쓰셨어요!!!
03월 04일 - 정렬/1758.py
Outdated
@@ -0,0 +1,20 @@ | |||
def tip(money,rank): #팁 계산 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p1.
여기에서도 함수명과 변수명을 tip으로 같게 쓰셨어요!
파이썬에서 선언되는 함수, 정수 등등 모든 객체에 대해 서로 다른 이름을 붙여 주세요!
03월 04일 - 정렬/1758.py
Outdated
n=int(input()) #사람 수 | ||
tip_list=[] #tip 리스트 | ||
for i in range(n): | ||
tip_list.append(int(input())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p2.
tip_list = [ 이 안에서 for문을 이용
해 바로 숫자를 넣을 수 있을 것 같아요! ]
어떻게 하면 될까요?!
03월 04일 - 정렬/1946.py
Outdated
n=int(input()) #지원자 숫자 | ||
data=[] | ||
for _ in range(n): | ||
data.append(tuple(map(int,sys.stdin.readline().rstrip().split()))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p2
여기에서만 sys.stdin.readline()을 쓰기에는 아까워요!
모든 input을 sys.stdin.readline으로 쓴다면 어떨까요?
대입을 이용해 보세요!
03월 04일 - 정렬/1946.py
Outdated
flag=data[0][1] | ||
count=0 #탈락자 수 | ||
#2차 점수 비교 | ||
for i in range(1,n): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3
여기에서도 range를 이용하지 않고, 바로 data[i]를 불러올 수 있을 것 같아요!
for문을 이용해서 바로 data에 있는 값을 뽑아 보세요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혜민님 수정 모두 확인되셨어요!!
문제 푸느라 너무 고생 많으셨습니다❤️
코드가 많이 간결해졌네요!! 이렇게 조금조금씩 해나가다 보면 언젠가는 알고리즘 신><이 되어 있으실 거예요!!
앞으로 입력에는 리스트 애용하기로 꼬옥 약속혜요.. 👍
필수 2/2문제, 선택 5/5문제 확인되셨습니다!
merge 하셔도 돼용!!
|
||
|
||
print(s_value(a_sorted,b,n)) | ||
print(s_value(a,b,n)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리스트를 쓰니까 훨씬 간편해졌네요! 👍
for j in range(n-1,m): #역배치한 원소 집어넣기 | ||
card[j]=range_sorted.pop(-1) | ||
|
||
card[n-1:m]=reversed(card[n-1:m]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reversed와 슬라이싱을 잘 이용해 주셨어요!! 👍
s%=60 | ||
h=c//3600%24 | ||
m=c%3600//60%60 | ||
s=c%3600%60%60 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
h, m, s는 몫과 나머지를 이용하기 때문에 양수이든 음수이든 상관이 없죠!
코드가 간결해졌네요!! 👍
@@ -1,20 +1,21 @@ | |||
import sys | |||
input=sys.stdin.readline |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이렇게 import sys밑에 input = sys.stdin.readline
을 쓰면 편해져요!!! 👍
내용 & 질문
<기존 제출>
<추가 제출>