목록전체 글 (146)
개발자 블로그
문제 설명 더보기 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예stringsn..
두 객체의 비교와 복사 객체를 비교할 때 사용할 수 있는 두 가지 연산자 '==', 'is' 얼핏 보면 같아보이지만, 사실 이 두 가지의 차이를 분명하게 짚고 넘어가야한다. v1 == v2 변수 v1과 v2가 참조하는 객체의 내용이 같은가? v1 is v2 변수 v1과 v2가 참조하는 객체는 동일한 객체인가? 예시를 보며 설명해보자. >>> r1 = [1,2,3] >>> r2 = [1,2,3] >>> r1 is r2 #참조하는 객체가 동일 객체인가? 즉, 메모리 주소가 같니? False >>> r1 == r2 #참조하는 객체의 내용이 같은가? 즉, 두 값의 내용이 일치하니?? True 참조에 대해 앞서 블로깅을 했지만 여기서 간략히 짚고 넘어가자면, 메모리에 저장된 값에 변수명이 적힌 포스트잇을 붙이는 ..
immutable & mutable 객체가 지닌(객체에 저장된) 값이 수정이 불가능한 객체를 'immutable 객체'라고 하며, 반대로 객체가 지닌 값이 수정이 가능하면 'mutable 객체'라고 한다. 여기서 수정이 가능하다는 것은 메모리 주소가 바뀌지 않고 값을 수정할 수 있다는 것이다. 아래 예제 코드를 보며 부연 설명을 해보겠다. ##리스트## >> r = [1, 2, 3] >> id(r) #리스트의 메모리 주소 12345 >> r += [4, 5, 6] >> r >> [1, 2, 3, 4, 5, 6] >> id(r) 12345 #값이 바뀌었지만, 위 주소와 동일한 것을 확인할 수 있다. mutable 객체로는 대표적으로 리스트와 딕셔너리가 있고, immutable 객체로는 대표적으로 튜플, 문..

가비지 컬랙션이란? 레퍼런스 카운트가 0이라는 것은 아무것도 참조하고 있지 않다는 것으로 메모리 내에서 소멸 대상이 된다. 소멸 대상이 되었다고 해서 바로 소멸이 되진 않지만, 시스템에 시간적 여유가 있을 때 소멸시키게 된다. 이러한 일련의 과정들이 '가비지 컬렉션'이라고 한다. 즉, 레퍼런스 카운트가 0인 값은 소멸 대상이 되고, 시스템에 시간적 여유가 있을 때 소멸시키는 일련의 과정이다. 그렇다면 레퍼런스와 레퍼런스 카운트는 무엇인가! 파이썬에서의 변수는 빈상자에 담아둔다라는 개념보다는 '포스트 잇'과 같이 떼었다 붙였다 하는 개념이다. 즉, 참조(레퍼런스)는 이름이 쓰여진(변수명) 포스트잇을 붙인 것이라고 생각하면 된다. 따라서 레퍼런스 카운트는 객체를 참조하는 변수의 수이다. 그러면 가비지 컬랙션..

문제 설명 더보기 [1차] 다트 게임 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다..
목차 더보기 Story 01 레퍼런스 카운트와 가비지 컬렉션 [가비지 컬렉션] [파이썬 인터프리터] Story 02 수정 가능한 객체와 수정 불가능한 객체 [immutable & mutable] [성격에 따라 달라지는 함수의 정의] Story 03 깊은 복사와 얕은 복사 [두 객체의 비교와 복사] [깊은 복사] Story 04 리스트 컴프리헨션 [리스트 생성 방법] [조건 필터 추가하기] [리스트 컴프리헨션에 for 한번 더 들어가는 경우] [이중 for 루프에 조건 필터 추가] Story 05 Iterable 객체와 Iterator 객체 [iter 함수] [Iterable 객체와 Iterator 객체의 구분] [스페셜 메소드] [Iterable 객체의 종류와 확인 방법] [for 루프와 Iterable..
참고: https://velog.io/@magnoliarfsit/ReDjango-1.-%EC%9E%A5%EA%B3%A0-%EC%B4%88%EA%B8%B0%EC%84%B8%ED%8C%85 [Re:Django] 1. 장고 초기세팅 1차 그룹프로젝트가 끝나고 내가 얼마나 부족한 지 알 수 있었다.모래성이 무너질듯 불안하게 쌓여가고 있었는데, 그 모래성이 무너지지않도록 다시 한 번 처음부터 차근차근 정리해볼 생각이 velog.io https://medium.com/@likegondry/django-annotate-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-6034396e45f5 [Django] annotate() 알아보기 오늘은 django의 annotate()에 대해 다뤄본다. anno..

트랜잭션이란? 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징 1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 3. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질 Atomicity(원자성) 1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류..

문제 설명 더보기 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열..
문제 설명 더보기 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 abresult 5 24 "TUE" 나의 풀이 calender = { 1:31, 2:29, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9..