목록분류 전체보기 (142)
개발자 블로그
문제 설명 더보기 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six..
문제 설명 더보기 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력..
1. 자료형 분류 파이썬이 제공하는 다음과 같은 자료형들을 가리켜 '시퀀스 타입(sequence type)'이라 한다. 문자열의 경우 텍스트 시퀀스 타입이라 하는데, 이것도 뭐 시퀀스 타입의 일종이다. 리스트 list 클래스의 객체 튜플 tuple 클래스의 객체 레인지 range 클래스의 객체 문자열 str 클래스의 객체 이들에겐 저장된 값의 순서 정보(위치 정보)가 존재하다는 특징이 있다. 레인지의 경우에는 시작과 끝값의 범위를 저장하지만 시작과 끝이라는 순서가 존재한다. 여튼 저장된 값의 순서가 존재한다는 것이 시퀀스(연속적인)타입의 특징이다. 다음 두 연산은 시퀀스 타입의 특징을 기반으로 진행되는 연산이다. 인덱싱 연산 s[0], s[1], s[2] 특정하는 값 하나를 참조하는 연산 슬라이싱 연산 ..
우연치 않게 오늘 알고리즘 문제를 풀다가 딕셔너리로 접근하여 푸는 문제를 만났다. 그래서 더욱 반갑기도 했지만, 막상 문제에 적용하려 하니 잘 안되기도 했다. 역시 많이 접해보고 사용해봐야 익숙해질 것 같다. 그래서 따로 블로그를 통해 위 내용에 대해 더 자세하게 작성해보려한다! 1) 키가 존재할 때와 존재하지 않을 때 키가 존재할 때와 하지 않을 때, 대입의 연산(=)의 경우에는 예외 없이 잘 값의 수정 또는 생성으로 잘 이어진다. 하지만 문제는 참조(ex. +=)를 하고 싶을 때 일어난다. 예를 들어 해당 키가 존재하지 않는 상황에서 값을 참조하려고 할 때, 예외가 발생한다. 예시를 들어보자! 이러한 경우 if와 else로 키가 존재할 때와 존재하지 않을 때 구분하여 처리할 수 있다. 하지만 더 나은..
문제 설명 더보기 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k..
dict 다양한 생성 방법 위 코드를 보면 다양한 방법으로 딕셔너리를 생성할 수 있는 것을 확인할 수 있다. 원래 딕셔너리와 같은 성격의 저장소는 저장 순서를 보장하지 않았지만, 버전 3.7부터 파이썬은 저장순서를 보장하고 있다고 한다. d4의 경우 zip 함수를 사용하여 딕셔너리를 만들었는데, zip함수는 순차적으로 값을 뽑아 튜플 형태로 반환해주는 함수이다. 안에 들어가는 객체(리스트, 문자열, 튜플) iterable 객체가 들어가는 것을 볼 수 있다. 여튼 zip함수는 같은 위치에 있는 값들을 조합해서 튜플을 만들어 낸다. 그리고 셋 이상의 값들을 조합하는 것도 가능하다! 딕셔너리 루핑 테크닉 dict.keys() # 딕셔너리의 키들만 참조하고자 할 때 dict.values() # 딕셔너리의 값들만..
튜플의 패킹과 언패킹 튜플로 값을 묶는 행위를 가리켜 '튜플 패킹'이라 하고 반대로 튜플로 묶여 있는 값들을 풀어내는 행위를 '튜플 언패킹'이라 한다. 튜플 패킹 하나 이상의 값을 튜플로 묶는 행위 튜플 언패킹 튜플에 묶여 있는 값들을 풀어내는 행위 예를 들어 봐보자! 먼저, 튜플의 패킹은 ()로 값들을 묶는 방법이 있고 그냥 소괄호 없이도 패킹이 가능하다! 반대로 언패킹을 진행할 때는 패킹 된 값의 수와 변수의 수를 갖게하여 할당해주면 된다. 그리고 언패킹 과정에서 *을 사용하여 둘 이상의 값을 리스트로 묶어서 하나의 변수에 저장하는 것도 가능!! 이렇듯, 튜플이 아닌 리스트로 묶인다는 사실을 기억하자. 현재는 맨 끝 값만 *을 사용하여 값을 묶었지만 가운데, 맨 앞 상관없이 묶을 수 있다는 것도 기..
문제 설명 더보기 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예 nmreturn 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 나의 풀이 def solution(n, m): answer = [] n_measure =..
QuerySet이란 django에서 QuerySet은 데이터베이스의 객체들의 집합을 의미한다. QuerySet은 기본값으로 objects 라는 이름을 가진 Manager 를 통해 얻을 수 있다. Manager는 django model과 데이터베이스 사이를 오갈 수 있게 해주는 역할이다. categories = Category.objects.all() 위와 같은 코드는 Category 테이블 내 모든 객체를 불러오는 역할을 한다. filter() 를 써서 원하는 정보만을 불러올 수도 있다. books = Book.objects.filter(name__startswith='This') 이 코드로는 ‘This’로 시작하는 책의 데이터들을 불러올 수 있다.
'제너레이터'는 Iterator 객체의 한 종류이다! 따라서 next 함수를 호출하면 값을 하나 씩 얻을 수 있다. 제너레이터 객체를 만들기 위한 두 가지 방법 제너레이터 함수(function) 제너레이터를 만들기 위한 함수 정의 제너레이터 표현식(expression) 제너레이터를 만들기 위한 식 제너레이터 함수 제너레이터 함수를 만들기 위해선 꼭 필요한 녀석이 있다! 바로 yeild라는 것인데, 함수에서 return과 비슷한 역할이라고 생각하면 된다. 우리는 함수 내에 yield가 선언되기만 하면 아 이 함수는 제너레이터 함수구나라고 생각하면 되겠다. >>> def gen_num(): print('first num') yield 1 print('second num') yield 2 >>> gen = g..