본문 바로가기

프로그래머스 퀴즈(Python)/level 0

(13)
23.04.21 파이썬 코딩 퀴즈#233 정수를 나선형으로 배치하기 (프로그래머스 스쿨) 이번 문제는 정수를 나선형으로 배치하기 문제이다. level 0 에 추가된 문제인데, 생각보다 까다로운 문제라서 따로 포스팅 하려고 한다. 먼저 다른 문제인 삼각 달팽이 문제랑 비슷항 유형의 문제이다. https://yorysis.tistory.com/268 23.02.01 파이썬 코딩 퀴즈#127 삼각 달팽이(프로그래머스 스쿨) 이번 문제는 삼각 달팽이 문제이다. 딱히 문제 설명이 없다. 밑변과 높이가 n인 삼각형에서 맨 위쪽부터 1을 시작으로 채워나가는데, 진행방향은 그림과 같이 시계반대방향으로 삼각형을 그리며 yorysis.tistory.com 한가지 다른점은 삼각 달팽이 문제이 경우 방향이 한번 꺾일때마다, 탐색하는 길이 역시 한칸씩 줄어든다는 점이고, 위 문제는 그렇지 않다는 점이다. 코드는 l..
22.12.21 파이썬 코딩 퀴즈#34, 35, 36, 37, 38(프로그래머스) 이번 문제는 기존 리스트를 2차원 배열 행태의 리스트로 전환하는 문제이다. 기본적으로 내가 생각한 답안은 두가지 이다. 1. 빈 리스트에 값을 끊어서 리스트 형태로 전달한다. 2. 먼저 해당하는 빈 리스트를 생성한 다음, 값을 차례대로 넣는다. 값을 끊어서 넣는건 슬라이싱을 이용하는 방법이고, 나는 두번째인 조금 더 까다로운 해결법을 선택했다. 사실... 둘다 큰 차이는 없다. answer 이라는 빈 리스트를 만들건데, 먼저 각 요소들이 들어갈 리스트를 만들어 주고, 그 빈 리스트가 몇개가 전체 리스트에 들어가는지 정의해 주면 된다. 문제의 설명이 길지만, 경우의 수를 계산하는 문제이다. 그리고 친절하게 공식까지 적혀져 있다. 사실 math 라이브러리를 사용하면 간단한 문제이다. 하지만 가급적 라이브러리..
22.12.20 파이썬 코딩 퀴즈#30, 31, 32, 33(프로그래머스) 이번 문제는 3,6,9 문제 처럼 보이지만, 생각보다 조건이 더 까다롭다. 3의 배수들도 다 처리해 줘야 하는 문제이다. 코드를 살펴보면 건너띄울 값으로 사용할 m 외에는 특별한건 없어 보인다. for 문 아래에 while문을 작성해 줌으로서, i 인자 하나를 가지고 계속 반복할 수 있게끔 해주었다. 또한 while문의 조건을 생성된 i+m 값이 3으로 나누어 떨어지거나, 문자형으로 변환하였을때 3을 포함하는 경우라면 계속해서 m 값을 증가 시켜 준다. 순차적으로 값이 상승하기에 m 값은 누적되어서 i값에 더해줘야 한다. 다시 등장한 삼각형 문제이다. 이번엔 2변의 길이만 주어지만, 남은 한변이 될 수 있는 정수의 개수를 구하는 문제이다. 조건에 따라 가장 긴 변이 될 정수는 전달받은 두 변의 합보다 큰..
22.12.19 파이썬 코딩 퀴즈#26, 27, 28, 29 (프로그래머스) 특이한 정렬 문제이다. 정수 n 에 가까운 수부터 정렬하되, 거리가 같은 경우 더 큰수를 앞에 오도록 배치해 주어야 한다. 큰 수부터 찾아야 하기에 정렬은 내림차순으로 해서 큰 수부터 비교해 주어야 한다. i의 범위는 조건에 의해 10,000으로 설정해 주어도 좋지만, 어느 조건에서든 작동하게 해주기 위해 전달받은 리스트의 제일 큰값과 n 을 더한 값을 설정해 주었다. 기존의 문제였던 가까운 수 찾기 문제의 연장이라고 보면 될 듯. 다음 문제는 유한소수를 판별하는 문제이다. 해당 문제를 해결하기 위해서는 수학적인 개념부터 이해하고 넘어가야 한다. 먼저 기약분수란, 분모와 분자를 최대 공배수로 나눈 뒤 상태를 말한다. 그 기약 분수 상태의 분모의 소인수가 2와 5만 존재하는 경우, 유한 소수로 나타낼 수 ..
22.12.16 파이썬 코딩 퀴즈#22, 23, 24, 25(프로그래머스) 이번 문제는 가장 가까운 수를 구하는 문제이다. 생각보다 까다롭고 0레벨 문제라고 보기에는 좀 복잡해 보인다. 내가 생각한 풀이법의 위 코드와 같다. 먼저 전달받은 array 리스트를 오름차순 정렬하여 준다. abs(n-i)의 값으로 쓸 j 는 range를 통해 1부터 100까지의 리스트에서 하나씩 가져오게 되고 abs(n - i) = j 에 의해 j가 0 이 되는 i가 answer 리스트의 첫번째에 들어오게 된다. 없다면 다음 오름차순 정렬도 되어 있기에 만약 array에 10과 12가 있고 n으로 11이 주어진다면, 두 개의 결과값은 같겠지만, 오름차순으로 정렬되었기 때문에 10이 먼저 계산되어지고, 따라서 answer 에는 10이 먼저 들어가게 된다. 이번 문제는 생각의 전환이 필요한 문제이다. 수..
22.12.15 파이썬 코딩 퀴즈#20, 21 (프로그래머스) 이번 문제는 영어가 싫어요 문제이다. 입력받는 값이 띄워쓰기가 없기 대문에 굳이 문자열을 분리해서 생각할 필요는 없다. 나는 두개의 리스트를 준비하여 replace()를 이용해서 문자를 숫자로 변환해주고, 최종적으로 변환된 값을 정수형으로 반환해 주도록 하였다. 다음 문제도 문자열에 관한 문제이다. 이번엔 소문자를 대문자로, 대문자는 소문자로 변환해 주어야 한다. 어렵게 생각할 것 없다. answer 이라는 새로운 변수에 한 글자 씩 변환한 값을 하나씩 전달해 주면 된다. 아직 모르던 내용 이였는데, 정답 코드를 작성한 후 살펴보다가 찾았다!!! 저런 내장 함수가 존재하는지도 몰랐는데, 또 이렇게 아는 내용이 늘어간다.
22.12.15 파이썬 코딩 퀴즈#15,16,17,18 (프로그래머스) 이번에 OX 판별 문제 이다. 각 배열안 요소들은 일련의 수학 문제이고, 해당 수식이 참인지 거짓인지를 판별해야 한다. 방법은 여러가지가 있다. 1. 각 요소들을 하나씩 분리 후 수식을 다시 만들어서 계산하는 방법 2. 정답과 문제만 분리 후 eval()을 이용해 수식 자체를 실행해 값을 비교하는 방법 3. 수식 자체를 논리형으로 바꾸어 eval()을 실행하는 방법... 처음에는 각 요소들을 하나씩 분리하는 작업을 했었는데, 막상 정답을 맞추고 다른 사람들의 코드를 살펴보다가 위 코드를 만들었다. 딱히 설명을 남겨놓을 게 없다. 다음 문제는 배열 안에서 가장 큰 수를 찾는 문제이다. 가장 큰 수만 찾는건 max()를 사용하면 되고, 해당 수의 index 번호를 찾는것은 index() 또는 find()를 ..
22.12.15 파이썬 코딩 퀴즈#12, 13, 14 (프로그래머스) 딱히 생각을 안해도 될 문제가 나왔다. 하지만 언제나 함정은 존재하는 법이다. 간단하게 해결 되기에 바로 웹페이에서 작성하였다. 1. my_string.lower()을 통해 모든 문자열을 소문자로 바꾸어 준다. 2. str은 sort() 내장함수가 없다. 따라서 이를 해결하기 위해 sorted()를 사용하였다. 3. join을 이용하여 '' 문자열에 sorted() 로 정렬된 내용을 삽입해 주면 끝. 다음 문제는 세균 증식 문제이다. 거듭제곱 문제는 아니다. 입출력 예의 값들을 가지고 살펴보면 세균 2마리가 10시간이 경과하게 되면 2(세균 수) * 2 (1시간 뒤) * 2 (2시간 뒤) * ... * 2(10시간 뒤) = 2048 이 된다. 참고로 2의 10승의 1024 이다. 7(세균 수) * 2 (..