PS/프로그래머스 82

3진법 뒤집기 (lv1)

입력 n을 3진법으로 변환한 뒤, 거꾸로 뒤집어 다시 10진법으로 바꾸는 알고리즘 이다. 핵심은 거꾸로 뒤집는다는 것과, 다시 10진법으로 바꿔서 반환한다는 것이다. 처음에는 while문 안에서 리스트에 값을 넣어 순서를 뒤집은 다음 10진법으로 바꾸는 연산을 다시 for문을 돌려 진행하려고 했는데, 큐를 이용하여 순서를 뒤집는 과정을 건너 뛰었다. 큐 파이썬에서 큐(queue) 자료 구조 사용하기 | Engineering Blog by Dale Seo 파이썬에서 큐(queue) 자료 구조 사용하기 Engineering Blog by Dale Seo www.daleseo.com pop(0), insert(0) 을 이용해서 리스트로 직접 구현하는 방법, collections모듈의 deque를 사용하는 방법..

실패율 (lv1)

이 문제의 핵심이다. 저 말을 잘 풀어보기만 하면 문제에 대한 접근은 해결된다. 분자 : 말 그대로, stages 배열에서 해당 값을 가지고 있는 요소의 숫자를 얘기한다. 분모 : 각 요소의 값보다 크거나 같은 값을 지닌 요소의 숫자를 의미한다. 여기서 난 배열내 각 요소의 값마다 개수가 어떻게 되는지 파악해야한다고 봤고, 또한 반복문을 돌며 실패율을 계산하기 위해서는 (스테이지 번호 : 스테이지에 있는 플레이어 수) 를 원소로 가지는 배열이 스테이지 번호를 기준으로 정렬되어야 한다고 봤다. 처음에는 스테이지에 있는 플레이어 수를 value로 가지는 딕셔너리와 스테이지 별 실패율을 value로 가지는 딕셔너리를 따로 만들었는데, 최악의 케이스로 무려 1200ms 정도가 나와 문제 자체는 풀었지만 분명 개..

체육복 (lv1)

도난을 당하지 않음 -여벌을 가져오지 않음 (1) -여벌을 가져옴 (2) 도난을 당함 -여벌을 가져오지 않음 (0) -여벌을 가져옴(1) 위와 같이 학생은 네 그룹으로 나뉜다. 이 때 두 벌이 있는 학생들이 체육복이 없는 학생들에게 최대한 많이 빌려줘야 하는 상황인데, 다음과 같은 상황을 조심해야 한다. 0 2 0 2 전 0 1 1 2 후 첫 번째 학생이 두 번째 학생에게 빌리고, 세 번째 학생이 네 번째 학생에게 빌렸으면 모두가 체육을 들을 수 있었는데, 위 상황은 그렇지 않다. 따라서 이 문제의 핵심은 체육복이 없는 학생 번호를 순서대로 나열해서 일정한 규칙으로 체육복을 빌리게 하는 것이다. sorted를 통해 오름차순으로 정렬하고, 번호가 작은 학생부터, 그 다음 학생이 체육복을 빌릴 수 있게 앞-..

모의고사 (lv1)

입력된 배열에 대해서, 각 요소가 세가지 배열 순서 규칙을 얼마나 만족하는지 확인하는 알고리즘이다. 입력된 배열을 반복문으로 돌면서, 매번 세가지 규칙을 놓고 만족하는지 확인하는 작업을 해주면 해결된다. List Comprehension [Python] list comprehension에 대한 즐거운 이해 - Parkito's on the way (shoark7.github.io) [Python] list comprehension에 대한 즐거운 이해 리스트를 생성하는 Python만의 독특한 문법인 list comprehension에 대해 살펴보고 다양한 예제를 만들어봅니다. 그리고 set, tuple, dict와 같은 다른 내장 자료구조에도 적용해봅니다. shoark7.github.io 코드 def so..

k번째 수 (lv1)

배열의 원하는 index를 잘라서 가져오는 정도의 간단한 문제이다. Lambda 함수 3.5 람다(lambda) - 왕초보를 위한 Python: 쉽게 풀어 쓴 기초 문법과 실습 (wikidocs.net) 3.5 람다(lambda) 오늘은 람다 형식과 그것을 이용하는 여러 가지 함수들에 대해서 알아보겠습니다. 당장 완벽하게 소화하실 필요는 없을 것 같구요, 가벼운 마음으로 이런 것이 있다는 정도만 아셔 ... wikidocs.net 코드 def solution(array, commands): answer = [] for command in commands: answer.append(sorted(array[(command[0]-1):command[1]])[command[2]-1]) return answer ..

완주하지 못한 선수 (lv1)

두 배열이 갖는 서로 다른 요소를 찾는 알고리즘이다. 두 배열은 각각 중복된 원소를 가질 수 있으며, 한 배열이 갖는 원소의 종류는 다른 배열이 갖는 원소의 종류에 종속된다. 즉 중복된 원소를 찾고, 그 원소의 개수가 서로 다른 경우를 찾아내는것이 핵심이다. 생각해볼 수 있는 경우는 다음과 같을 것이다. 두 리스트 간 원소들을 직접 비교한다 for문을 중첩해서, 말 그대로 index-value를 직접 비교하는 것이다. 이 경우 10^10 번의 연산이 필요해지기 때문에 사용할 수 없는 방법이다. 아래 그림을 참고해도, N의 범위가 100,000이기 때문에 O(N^2)은 사용하기 힘들다고 본다. 딕셔너리를 이용한다 for문을 중첩하여 돌리는 것을 포기했으니, 각 리스트에 대해 for를 한번씩 돌리면서, 혹은..

소수 만들기 (lv1)

주어진 배열에서 세 개의 수의 조합의 합이 소수인지 판별하는 알고리즘이다. 즉, 조합->소수판별만 하면 해결이다. 소수판별시 숫자의 제곱근까지만 반복문을 돌리면 확인이 된다는 사실을 기억하고 넘어가자. 조합 [Python] 순열(permutations )과 조합(combinations) (tistory.com) [Python] 순열(permutations )과 조합(combinations) 딱 정리 product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC combinations('ABCD', 2) AB.. pearlluck...

키패드 누르기 (lv1)

기준이 되는 두 좌표가 있고, 다음 목표 좌표에 더 가까운 거리에 위치한 기준 좌표를 옮기는 간단한 문제이다. 연산자 10. Python에서 제공하는 연산자 – 언제나 휴일 (ehpub.co.kr) 10. Python에서 제공하는 연산자 – 언제나 휴일 안녕하세요. 언휴예요. 이번에는 Python에서 제공하는 연산자들을 간략하게 살펴볼게요. Python에서 제공하는 연산자 종류에는 산술, 비교, 대입, 논리, 비트, 멤버쉽, 참조 비교 연산자가 있어요. ehpub.co.kr 코드 def solution(numbers, hand): answer = '' thumb = {"left":(3,0),"right":(3,2)} result = [] for num in numbers : numLoc = (3,1) i..

숫자 문자열과 영단어 (lv1)

입력값에 대해서 특정 문자열을 특정 문자로 바꾸는 간단한 프로그램이다. 정규표현식, 그리고 딕셔너리 객체 매핑으로 문제를 해결했다. 딕셔너리 02-5 딕셔너리 자료형 - 점프 투 파이썬 (wikidocs.net) 02-5 딕셔너리 자료형 [TOC] ## 딕셔너리란? 사람은 누구든지 이름 = 홍길동, 생일 = 몇 월 며칠 등으로 구별할 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 ... wikidocs.net get 메서드를 사용해서 key값을 이용해 value 값을 불러왔다. 문자열 대체하기 정규표현식을 사용해서 문자를 파싱하고, 각 group 에 적절한 처리를 해서 원하는 숫자배열을 만들기로 하였다. 정규표현식 07-2 정규 표현식 시작하기 - 점프 투 파이썬 (wikidocs.net) 0..

신규 아이디 추천 (lv1)

입력 값을 원하는 표현식에 부합하는지 검사하고 수정해주는 프로그램이다. 소문자 치환 파이썬 문자열 lower() - 제타위키 (zetawiki.com) 파이썬 문자열 lower() - 제타위키 다음 문자열 포함... zetawiki.com lower 함수를 이용해 대문자를 소문자로 바꿔준다. 정규표현식 [Python] 정규표현식 사용법(re) (kynk94.github.io) [Python] 정규표현식 사용법(re) Regular Expression NLP 관련 태스크를 하다보면 정규표현식을 다룰 때가 많다. 그러나 복잡한 것을 match 할 때는 매번 찾아보게 되어 기본적인 사용법과 여러가지 팁들을 정리하고자 한다. 정규표현식 kynk94.github.io import re m = re.compile(..