본문 바로가기

분류 전체보기521

[ 파이썬(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.
[ 파이썬(python) ] 프로그래머스 level1 - 제일 작은 수 제거하기 📌 제일 작은 수 제거하기 arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수를 완성하라. 단, 리턴하려면 배열이 빈 배열일 경우 [-1]을 리턴하라. 💡 나의 풀이 가장 작은 수를 제거할 때는 다음과 같은 방법이 있다. sorted함수로 오름차순 / 내림차순으로 정렬한 뒤 맨 앞 / 뒤 원소를 제거하기 min함수로 제일 작은 값을 찾아 해당 원소만 제거(remove)하기 문제에서는 n의 범위가 주어지지 않았지만, 시간복잡도를 고려해서 2번으로 선택했다. sorted함수의 시간복잡도는 O(NlogN)이고, max/min 함수의 시간복잡도는 O(N)이기 때문이다. 자료구조 별 시간복잡도: 파이썬 공식문서 remove함수는 원소 제거 후 empty면 빈 배열을 반환한다. 다른사람은 comprehensio.. 2021. 3. 31.