알고리즘 스터디 : 양꼬치
https://school.programmers.co.kr/learn/courses/30/lessons/120830
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
수줍은 쿼카님 코드:
#머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다.
#양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
def solution(n, k):
answer = 0
num = int(n / 10)
if n >= 10:
answer = (n * 12000) - ((num - k) * 2000)
else:
answer = (n * 12000) + (k * 2000)
return answer
🧡나의 한줄 코멘트 : 음료수 서비스로 몇개 줘야 하는지(num) 구한 후에 (k) 음료수 갯수에서 빼고 계산하는 방식이 흥미로웠다. if문을 사용해서 사고의 흐름이 어떻게 되는지 친절하게 보여주는 코드 같다.
탐스러운 사슴님 코드:
# 양꼬치
def solution(n, k):
k -= n // 10
answer = n * 12000 + k * 2000
return answer
🧡나의 한줄 코멘트: += 연산자로 더해주는 것은 종종 봤지만 -= 연산자로 마이너스 값을 만들어서 계산을 해주는 방식이 독특했다. 저렇게도 할 수 있구나..!
게으른 치타님 코드:
def solution(n, k):
Free_drink = n // 10
return (n * 12000) + (k * 2000) - (Free_drink * 2000)
🧡나의 한줄 코멘트 : 나랑 가장 비슷한 방식으로 생각해서 짠 코드 같다.
희망찬 당나귀님 코드:
# 양꼬치
def solution(n, k):
answer = 0
answer = n * 12000 + k * 2000
if int(n / 10) >= 1:
answer -= int(n / 10) * 2000
return answer
내 코드:
#양꼬치
def solution(n, k):
answer = (n*12000)+(k-int(n/10))*2000
return answer
알고리즘 스터디 : 삼각형의 완성조건(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
수줍은 쿼카님 코드:
# 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
#
# 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
# 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
def solution(sides):
sum = 0
sides.sort()
if sides[2] < sides[0] + sides[1]:
return 1
return 2
🧡나의 한줄 코멘트: 코드리뷰를 할 때 삼각형 뿐만 아니라 다른 사각형이나 오각형을 넣어도 돌아갈 수 있도록 확장성을 생각해서 표현하고 싶다는 말이 인상깊었다.
탐스러운 사슴님 코드:
삼각형의 완성조건 (1)
def solution(sides):
sides.sort()
if sides[0] + sides[1] > sides[2]: # sides.sum() - sides.max() > sides.max()
return 1
return 2
🧡나의 한줄 코멘트: 인덱스를 활용해서 접근한 방법이 흥미로웠다. 특히 sort함수를 이용해서 접근하면 가장 큰 값이 앞으로 정렬되니까 인덱스를 사용할 수 있는것이구나...! 하고 sort()함수의 활용법을 다시한번 알게 되었다.
게으른 치타님 코드:
#선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
#가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
#삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
def solution(sides):
if max(sides) < sum(sides) - max(sides):
return 1
else:
return 2
🧡나의 한줄 코멘트: max와 sum 함수를 사용해서 굉장히 간단하게 코드를 구현한 것이 인상깊었다. 리턴값이 하나밖에 없으니까 이 코드는 삼항연산자로 한줄로 줄일 수 있어보인다.
희망찬 당나귀님 코드:
#삼각형의 완성조건 (1)
def solution(sides):
sides.sort()
if sides[-1] < sum(sides) - sides[-1]:
answer = 1
else:
answer = 2
return answer
# def find maxnum(sides):
# maxnum = sides[0]
# for num in sides:
# if num > maxnum:
# maxnum = num
# def solution(sides):
# if maxnum < sum(sides) - maxnum:
# answer = 1
# else:
# answer = 2
# return answer
🧡나의 한줄 코멘트 : 주석처리 함으로 써 고민한 흔적이 보이는 코드이다. 연습할때는 저렇게 내가 시도했던 코드들을 주석으로 남겨놓는것도 좋을 것 같다. 내가 짠 코드를 나중에 보고 수정해볼 수도 있고 좋은 방법인 것 같다.
내 코드:
#삼각형의 완성조건 (1)
def solution(sides):
answer = 0
max_1 = int(max(sides))
a,b,c = map(int,sides)
if a == max_1:
if b+c > a:
answer = 1
else:
answer = 2
elif b == max_1:
if a+c > b:
answer = 1
else:
answer = 2
else:
if a+b > c:
answer = 1
else:
answer = 2
return answer
🧡나의 한줄 코멘트: 시간이 부족해서 규칙성을 찾아내지 못하고 if else문으로 하나하나 입력해줬다. 이런 코드를 하드코딩이라고 하는것 같던데 다른 사람들이 짠 코드와 비교해보니 확실히 안좋은 코드라는것을 알 수 있었다. 다음에 시간내서 천천히 생각해보고 다시 풀어보는 과정이 필요할 것 같다.
느낀점

알고리즘 스터디를 시작했다. 매일 1시간씩 시간을 정해놓고 두문제의 알고리즘 문제를 풀어본 후에 1시간씩 서로 푼 문제를 발표하며 자신의 풀이법에 대해 이야기 나누는 시간을 가지기로 했다.
오늘 처음으로 스터디를 진행해봤는데 굉장히 유익한 시간이었다. 같은 문제를 푸는데 생각하는 사고방식이 다 달라서 미묘하게 코드가 다른것을 확인 할 수 있었다. 내가 해결하지 못했던 문제를 효율적으로 해결하는 모습을 보면서 다른사람이 푼 알고리즘 코드를 분석해서 언젠간 나도 활용할 수 있도록 내것으로 만들어야겠다고 생각했다.
'Practice > 알고리즘' 카테고리의 다른 글
| 파이썬 알고리즘: 유한 소수 판별하기 (0) | 2022.12.06 |
|---|---|
| 알고리즘 스터디: 모음 제거, 진료 순서 정하기 (0) | 2022.11.18 |
| 파이썬 알고리즘 : 정다면체 (0) | 2022.11.17 |
| 파이썬 알고리즘 : 대표값 구하기 (0) | 2022.11.15 |
| 파이썬 알고리즘: K번째 큰 수 구하기. (0) | 2022.11.14 |