본문 바로가기

Algorithm272

[ 파이썬(python) ] 프로그래머스 level1 - 정수 내림차순으로 배치하기 📌 정수 내림차순으로 배치하기 자리수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴하라. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 💡 나의 풀이 이전에 풀었던 자리수 더하기 문제와 비슷하게 자리수를 정렬하려면 문자형(str)으로 접근하는것이 핵심포인트다. 이후, sorted를 사용해 정렬하고 나중에는 ''.join을 이용해 하나로 뭉쳐줬다. 하지만 문제에서 정수로 리턴하라고 했기때문에 int형을 다시 붙여줘야한다. 다른 사람의 코드를 보며 배운 점은, sorted를 사용하면 list를 자동으로 반환해주기 때문에 따로 list를 선언 할 필요가 없다는 점이었다. 또, map 함수를 사용하지 않았는데 이유는 str을 바로 int형으로 바꿔주지 않고 제일 마지막에 int형으로 바꿔주기.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 수박수박수 📌 수박수박수 길이가 n인 '수박수박수...'와 같은 패턴을 갖고있는 문자열을 리턴하는 함수를 만드는 문제다. 정답판정을 받고 다른 사람의 풀이를 보니까 리스트 슬라이싱을 이용해 쉽게 풀었던 코드를 봤다. 나중에 써먹자. 💡 나의 풀이 수박수박수..와 같은 패턴을 띄는 문자열을 빈 리스트에 선언했다. n의 길이가 10,000이하의 자연수이므로 범위를 fruit = [0] * 10001로 설정했다. 다음으로 홀수번째는 수, 짝수번째는 박이라는 패턴을 찾아냈다. 그래서 fruit리스트에 패턴을 넣어줬다. 그리고 n번만큼 리스트를 출력해 문자열(str)로 바꿔주었다. def solution(n): fruit = [0] * 10001 fruit = ['수' if i % 2 == 0 else '박' for i i.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 체육복 📌 체육복 체육복을 도난당한 학생에게 여벌의 체육복을 갖고있는 학생이 빌려주는 문제이다. n = 전체 학생, reserve = 여벌의 체육복이 있는 학생, lost = 체육복을 잃어버린 학생 💡 나의 풀이 문제에서는 각각의 학생을 key - value의 형태를 띄고있는 dictionary가 아닌, 리스트로 주어졌다. 전체 학생의 수가 5이면 n = [1, 2, 3, 4, 5] 또, 체육복을 빌려줄때는 바로 앞번호의 학생이나 뒷번호의 학생에게만 빌려 줄 수 있다고 했다. 그래서 index별로 값을 비교해서 나올수 있는 경우의 수를 분류했다. 여벌의 체육복을 빌려주는 경우의 수는 크게 2가지가 있다. lost가 reserve에 포함되지 않는 경우 reserve[i] == lost[j]+1이면 여벌의 체육복을.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 약수의 합 📌 약수의 합 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하자. 💡 나의 풀이 약수를 구하는것엔 3가지 방법이 있다. 처음부터 n까지 약수 구하기 처음부터 n//2까지 약수 구하기 처음부터 int(n**0.5)까지 약수 구하기 이전에 소수 판별 문제를 풀었을 때 범위를 제곱근까지만 구해서 소수를 구했었는데, 이번에는 2로 나눈값으로 구했다. 약수의 주요 특징은 자신을 제외한 가장 큰 약수는 n//2다. 예를 들어 n = 12일때는 자신을 제외한 가장 큰 약수는 6이고(1, 2, 3, 4, 6, 12) n = 30일때는 자신을 제외한 가장 큰 약수는 15다.(1, 2, 3, 5, 6, 10, 15, 30) 이처럼 범위를 n // 2+1까지만 구해주고 자기 자신을 더해주면 문제에서 요구하는 n의 약.. 2021. 3. 31.
[ 파이썬(python) ] 프로그래머스 level1 - 2016년 📌 2016년 00월 00일처럼 날짜가 주어졌을 때 무슨요일인지 맞추는 문제이다. 처음에 생각한 방법은 1일부터 31일까지 쭉 나열하고 7일이 되면 한바퀴를 다 돌기때문에 7로 나눈 나머지가 0, 1, ... 7이면 해당요일을 출력하는 방법을 떠올렸다. 전체적인 방법은 벗어나지 않았지만, if문을 사용하지 않고 그냥 요일[날짜]처럼 작성하면 코드도 간결해진다. 그리고 1월의 요일만 구하는게 아니라 1월 ~ 12월의 요일도 구해야하므로 months라는 변수를 선언해 1~12월의 요일들을 리스트에 선언했다. 구하려고 하는 달(month)은 그 전까지의 달(month)의 합과 일(day)을 더한 값에 %7을 해주면 해당 요일이 나온다. def solution(a, b): months = [31, 29, 31,.. 2021. 3. 31.