<문제>
한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.

 

입력

첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거나 같은 자연수 또는 0이다.

 

출력

첫째 줄에 최대 사용할 수 있는 회의의 최대 개수를 출력한다.

 

힌트

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

 

💡문제 해결 아이디어

  • 빨리 끝나는 회의 순서대로 정렬을 해야한다. 빨리 끝날 수록 더 많은 회의를 진행 할 수 있음
  • 시작시간을 오름차순으로 정렬하고, 끝나는 시간을 기준으로 다시 오름차순을 진행

 

n = int(input())
array = [] 

for i in range(n):
  start, end = map(int, input().split())
  array.append((start, end))

# 회의의 시작 시간과 끝나는 시간이 같을 수 있으므로 
# 시작시간을 기준으로 정렬을 한 뒤, 끝나는 시간을 기준으로 정렬을 한번 더 해줌
array.sort(key = lambda x: (x[0]))
array.sort(key = lambda x: (x[1]))

last = 0 # 회의의 마지막 시간을 저장할 변수
cnt = 0 # 회의 개수를 저장할 변수
for s, e in array:
  if s >= last: # 시작시간이 회의의 마지막 시간보다 크거나 같을경우
    cnt += 1
    last = e

print(cnt)

'Python > 백준' 카테고리의 다른 글

[백준 - 구현] 1032 명령 프롬프트  (0) 2023.01.03
[백준] 1026 보물  (0) 2023.01.02
[백준 - 구현] 1547 공  (0) 2022.08.04
[백준 - 그리디 알고리즘] 11399 ATM  (0) 2022.08.03
[백준 - 그리디 알고리즘] 11047 동전0  (0) 2022.08.03
<문제>
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)

둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

 

출력

첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.

 

n, k = map(int, input().split())
count = 0

array = []

for i in range(n):
  array.append(int(input())) # 입력받은 동전을 저장

array.sort(reverse = True) # 오름차순으로 주어졌으므로 내림차순으로 정렬

for coin in array:
  count += k // coin # 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기
  k %= coin

print(count)

 

 

 


내가 한 solution

num, base = map(int, input().strip().split(' '))

output = 0
for i in range(len(str(num))):
    output += int(str(num)[-1-i])*(base**i)

print(output)

 

 

 

파이썬의 int(x, base = 10)함수는 진법 변환을 지원

num, base = map(int, input().strip().split(' '))

print(int(str(num), base))
  • int(x, radix) : radix 진수로 표현된 문자열 x를 10진수로 변환 후 반환
  • 주의할 점은 첫번째 인자가 무조건 문자열


내가 한 solution

a, b = map(int, input().strip().split(' '))
print(a//b, a%b)

 

divmod 와 unpacking 사용

print(*divmod(a, b))
  • divmod(x, y) -> x를 y로 나눈 몫과, 나머지가 들어있는 tuple을 리턴
  • 무조건 divmod를 사용하는게 좋은 방법은 아님
  • divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느림. 대신, 큰 숫자를 다룰 때는 divmod가 더 빠름

unpacking 

  • 여러 개의 객체를 포함하고 있는 하나의 객체를 풀어서 보여주는 것
>> print(divmod(5, 2))
(2, 1) # 튜플 형태의 하나의 객체를 반환

>> print(*divmod(5, 2))
2 1 # 튜플 내 2와 1이라는 int형 객체를 각각 반환

enumerate는 '열거하다' 라는 뜻

순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴

for문과 함께 자주 사용

 

 

for i, name in enumerate(['body', 'foo', 'bar']):
    print(i, name)

[출력]

>> 0 body
     1 foo
     2 bar

 

순서값과 함께 body, foo, bar가 순서대로 출력됨

enumerate를 for문과 함께 사용하면 자료형의 현재 순서(index)와 그 값을 쉽게 알 수 있음

 

'Python > 공부' 카테고리의 다른 글

파이썬 n진수 변환  (0) 2023.01.07
파이썬 최대공약수, 최소공배수 함수 - gcd, lcm  (2) 2023.01.05
입력  (0) 2022.12.31
리스트 컴프리헨션  (0) 2022.12.31
클래스  (0) 2022.03.18

클래스 개념

클래스

     무엇인가를 계속해서 만들어낼 수 있는 설계 도면

     별모양, 하트모양같은 뽑기의 틀

인스턴스

     클래스에 의해서 만들어진 피조물

     별 또는 하트가 찍힌 뽑기

 

# 클래스의 가장 간단한 예
class Simple:
    pass

# Simple 클래스의 인스턴스
a = Simple()



 

이야기 형식으로 클래스 기초 쌓기

클래스 변수

class Service:
    secret = "영구는 배꼽이 두 개다."

pey = Service()

pey.secret
>>> "영구는 배꼽이 두 개다."

클래스 함수

class Service :
    secret = "영구는 배꼽이 두 개다."    <- 유용한 정보
    def sum(self, a, b):    <- 더하기 서비스
        result = a + b
        print("%s + %s = %s입니다." % (a, b, result))

pey = Service()

pey.sum(1, 1)
>>> 1 + 1 = 2입니다.

self 간단히 살펴보기

class Service :
    secret = "영구는 배꼽이 두 개다."
    def sum(self, a, b):
        result = a + b
        print("%s + %s = %s입니다." % (a, b, result))

pey = Service()

pey.sum(1, 1)
>>> 1 + 1 = 2입니다.

더하기 서비스에 가입했는지 여부를 확인하기 위한 장치 추가

sum 함수의 첫 번째 입력값을 통해 가입 여부를 판단

pey라는 아이디를 가진 사람은 다음 처럼 sum 함수를 사용

pey.sum(pey, 1, 1)

sum 함수는 첫 번째 입력값을 가지고 가입한 사람인지 아닌지를 판단

따라서 첫 번째 입력 인수로 pey라는 아이디를 주면 sum 함수는 pey라는 아이디가 이미 가입되어 있는 것을 확인한 후 서비스를 제공해 줄 것이다.

 

클래스 내 함수의 첫 번째 인수는 무조건 self로 사용해야 인스턴스의 함수로 사용할 수 있다.

 

self 제대로 알기

사용자에게 이름을 입력받아서 더하기 서비스를 제공할 때 앞 부분에 그 이름을 넣어주기

class Service :
    secret = "영구는 배꼽이 두 개다."    
    def setname(self, name):
        self.name = name
    def sum(self, a, b): 
        result = a + b
        print("%s님 %s + %s = %s입니다." % (self.name, a, b, result))

pey = Service()

pey.setname("홍길동")

pey.sum(1, 1)
>>> 홍길동님 1 + 1 = 2입니다.

__init__이란 무엇인가?

아이디를 부여해 줄 때 사람의 이름을 입력받아야만 아이디를 부여해 해주는 방식으로 바꾸기

"인스턴스를 만들 때 항상 실행된다"

class Service :
    secret = "영구는 배꼽이 두 개다."    
    def __init__(self, name):
        self.name = name
    def sum(self, a, b): 
        result = a + b
        print("%s님 %s + %s = %s입니다." % (self.name, a, b, result))

pey = Service("홍길동")

pey.sum(1, 1)
>>> 홍길동님 1 + 1 = 2입니다.

클래스 자세히 알기

클래스란 인스턴스를 만들어내는 공장

클래스는 해당 인스턴스의 설계도라고 할 수 있음

클래스의 구조

class 클래스 이름[(상속 클래스명)]:
    <클래스 변수1>
    <클래스 변수2>
    ...
    <클래스 변수N>
    def 클래스 함수 1(self[, 인수1, 인수2, ...]):
        <수행할 문장1>
        <수행할 문장2>
        ...
    def 클래스 함수 2(self[, 인수1, 인수2, ...]):
        <수행할 문장1>
        <수행할 문장2>
        ...
    def 클래스 함수 N(self[, 인수1, 인수2, ...]):
        <수행할 문장1>
        <수행할 문장2>
        ...
    ...

class라는 키워드는 클래스를 만들 때 사용되는 예약어, 그 바로 뒤에 클래스 이름을 입력해야 한다.

클래스 이름 뒤에 상속할 클래스가 있다면 괄호() 안에 상속할 클래스 이름을 입력한다.

클래스 내부에는 클래스 변수와 클래스 함수들이 있다.

 

사칙연산 클래스 만들기

클래스를 어떻게 만들지 먼저 구상하기

  • 사칙연산 클래스 FourCal
  • 사칙연산을 하려면 두 숫자를 입력받아야겠군 setdata 메서드
  • 더하기 기능 sum 메서드
  • 빼기 기능 sub 메서드
  • 나누기 기능 div 메서드
  • 곱하기 기능 mul 메서드

클래스 만들기

class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second
    def sum(self):
        result = self.first + self.second
        return result
    def sub(self):
        result = self.first - self.second
        return result
    def div(self):
        result = self.first / self.second
        return result
    def mul(self):
        result = self.first * self.second
        return result

'박씨네 집' 클래스 만들기

클래스 구상하기

  • '박씨네 집 ' 클래스 HousePark
  • 박씨 가족의 '이름'을 설정하려면? setname 메서드 -> __init__메서드
  • 박씨 가족 중 한 사람이 여행 가고 싶은 곳을 출력해 볼까? travel 메서드

클래스 만들기

class HousePark:
    lastname = "박"
    #def setname(self, name):
    #    self.fullname = self.lastname + name
    def __init__(self, name):
        self.fullname = self.lastname + name
    def travel(self, where):
        print("%s, %s여행을 가다." %( self.fullname, where))

>>>pey = HousePark("응용")
>>>pey.travel("태국")
박응용, 태국여행을 가다.

클래스의 상속

어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것

class 상속받을 클래스명(상속할 클래스명)

 

'김씨네 집'이라는 HouseKim을 만들어보자

HouseKim이라는 클래스가 HousePark 클래스를 상속받는 예제

class HouseKim(HousePark):
    lastname="김"

>>>juliet = HouseKim("줄리엣")
>>>juliet.travel("독도")
김줄리엣, 독도여행을 가다.

메서드 오버라이딩

class HouseKim(HousePark):
    lastname="김"
    def travel(self, where, day):
        print("%s, %s여행을 %d일 가네." %( self.fullname, where, day))

>>>juliet = HouseKim("줄리엣")
>>>juliet.travel("독도", 3)
김줄리엣, 독도여행을 3일 가네.

연산자 오버로딩

연산자 오버로딩이란 연산자(+, -, *, /, ...)를 객체끼리 사용할 수 있게 하는 기법

class HousePark:
    lastname = "박"
    def __init__(self, name):
        self.fullname = self.lastname + name
    def travel(self, where):
        print("%s, %s여행을 가다." %(self.fullname, where))
    def love(self, other):
        print("%s, %s 사랑에 빠졌네" %(self.fullname, other.fullname))
    def __add__(self, other):
        print("%s, %s 결혼했네" %(self.fullname, other.fullname))

class HouseKim(HousePark):
    lastname="김"
    def travel(self, where, day):
        print("%s, %s여행을 %d일 가네." %( self.fullname, where, day))

>>>pey = HousePark("응용")
>>>juliet = HouseKime("줄리엣")
>>>pey.love(juliet)
>>>pey + juliet
박응용, 김줄리엣 사랑에 빠졌네
박응용, 김줄리엣 결혼했네

'박씨네 집' 클래스 완성하기

class HousePark: lastname ="박"
    def __init__(self, name):
        self.fullname = self.lastname + name
    def travel(self, where):
        print("%s %s여행을 가다." %(self.fullname, where))
    def love(self, other):
        print("%s, %s 사랑에 빠졌네"%(self.fullname, other.fullname))
    def __add__(self, other):
        print("%s, %s 결혼했네"%(self.fullname, other.fullname))
    def fight(self, other):
        print("%s, %s 싸우네"%(self.fullname, other.fullname))
    def __sub__(self, other):
        print("%s, %s 이혼했네"%(self.fullname, other.fullname))

class HouseKim(HousePark):
    lastname = "김"
    def travel(self, where, day):
        print("%s %s여행 %d일 가네." %(self.fullname, where, day))

pey = HousePark("응용")
juliet = HouseKim("줄리엣")
pey.travel("부산")
juliet.travel("부산",3)
pey.love(juliet)
pey + juliet
pey.fight(juliet)
pey - juliet

>>>박응용 부산여행을 가다.
>>>김줄리엣 부산여행 3일 가네.
>>>박응용, 김줄리엣 사랑에 빠졌네
>>>박응용, 김줄리엣 결혼했네
>>>박응용, 김줄리엣 싸우네
>>>박응용, 김줄리엣 이혼했네

'Python > 공부' 카테고리의 다른 글

파이썬 n진수 변환  (0) 2023.01.07
파이썬 최대공약수, 최소공배수 함수 - gcd, lcm  (2) 2023.01.05
입력  (0) 2022.12.31
리스트 컴프리헨션  (0) 2022.12.31
Python 내장함수 - enumerate  (0) 2022.03.23

 

[6주차] Chapter 7.2 ~ 8

 

[기본 미션] p.342 [직접 해보는 손코딩:BeautifulSoup 스크레이핑 실행하기] 예제 실행 후 결과 화면 인증샷

 

내가 뭘 잘못했는지 엄청 오류 나고 실행 안되어서 구글링 해서 찾아본 방법

 

성공!

 

 

[선택 미션] 혼공 용어 노트에 나만의 언어로 객체, 클래스, 인스턴스, 생성자, 메소드 보충 설명쓰고 인증샷

 

 

[5주차] Chapter 6~7.1

 

[기본 미션] 구문 오류와 예외의 차이 설명하기

 

오류의 종류

  • 프로그램 실행 전에 발생하는 오류 - 구문 오류(Syntax Error)
  • 프로그램 실행 중에 발생하는 오류 - 예외(Exception) 또는 런타임 오류(Runtime Error)

구문 오류

괄호의 개수, 들여쓰기 문제 등으로 인해 프로그램이 실행되기도 전에 발생하는 오류

해결하지 않으면 프로그램 자체가 실행되지 않는다.

 

예외 또는 런타임 오류

실행 중에 발생하는 오류

 

기본 예외 처리

예외 처리 : 예외를 해결하는 모든 것

구문오류는 프로그램이 실행조차 되지 않기 때문에 예외 처리 방법으로 처리할 수 없다. 문법적인 문제가 발생한 코드를 수정해 줘야 한다.

  • 기본 예외 처리 : 조건문을 사용하는 방법
  • try 구문을 사용

try except 구문

예외가 발생할 상황을 예측하고 모두 조건문으로 처리하는 것은 어렵다.

프로그래밍 언어의 구조적인 문제로 인해 조건문만으로 예외를 처리할 수 없는 경우도 있다.

 

try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
    pass // 예외 발생만 일단 처리하고 강제 종료되는 것부터 막기위한 목적

 

 

try except else 구문

try except 구문 뒤에 else 구문을 붙여서 사용하면 '예외가 발생하지 않았을 때 실행할 코드'를 지정할 수 있다.

예외가 발생할 가능성이 있는 코드만 try 구문 내부에 넣고 나머지를 모두 else 구문으로 뺀다

try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
else:
    예외가 발생하지 않았을 때 실행할 코드

 

 

finally 구문

예외처리 구문에서 가장 마지막에 사용할 수 있는 구문

예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드

 

try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
else:
    예외가 발생하지 않았을 때 실행할 코드
finally:
    무조건 실행할 코드

 

 

[선택 미션] p.293 3번 문제 풀고 인증샷

 

 

[4주차] Chapter 5

 

[기본 미션] p.223 [직접 해보는 손코딩: 범위 내부의 정수를 모두 더하는 함수] 실행 후 코드가 입력된 화면 및 실행결과 화면 인증샷

 

 

 

[선택 미션] 매개변수, 기본 매개변수, 가변 매개변수에 대해 간략하게 정리한 내용 포스팅하기

 

함수의 기본

def 함수 이름():
       문장

 

매개변수

 

매개변수 : 괄호 안에 것들. 함수를 생성할 때 괄호 내부에 식별자를 입력해서 만든다
매개변수를 만들면 함수를 호출할 때 값을 입력해서 함수 쪽으로 전달할 수 있다

def 함수 이름(매개변수매개변수, … ) :
       문장

 

매개변수와 관련된 TypeError

함수를 생성할 때 매개변수를 만들었는데, 함수를 호출할 때 매ㅐ개변수를 넣지 않거나 더 많이 넣으면 오류 발생
함수를 호출할 때는 함수를 선언할 때와 같은 개수의 매개변수를 입력해야 한다

 

가변 매개변수

함수를 선언할 때의 매개변수와 함수를 호출할 때의 매개변수가 같아야 한다
print()함수는 매개변수를 원하는 만큼 입력할 수 있다
이처럼 매개변수를 원하는 만큼 받을 수 있는 함수를 가변 매개변수라고 한다. (매개변수가 변할 수 있다)

def 함수이름(매개변수매개변수, … , *가변 매개변수):
        문장

 

 

가변 매개변수 사용시 제약사항

가변 매개변수 뒤에는 일반 매개변수가 올 수 없다
어디까지가 가변 매개변수고 어디가 매개변수인지 구분하기 어렵기 때문
가변 매개변수는 하나만 사용할 수 있다

 

 

기본 매개변수

매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본 값(‘매개변수 = 값’ 형태)

print(value, … , sep=‘ ‘, end=‘\n’, file=sys.stdout, flush=False)

 

 


기본 매개변수 사용시 제약사항

기본 매개변수 뒤에는 일반 매개변수가 올 수 없다

 


키워드 매개변수

가변 매개변수와 기본 매개변수 둘을 같이 쓸 수 있을까?

 

  • 기본 매개변수가 가변 매개변수보다 앞에 올 때는 의미가 없다(오류)
  • 가변 매개변수가 기본 매개변수보다 앞에 올 때는 가변 매개변수가 우선이 됨

키워드 매개변수: 매개변수 이름을 지정해서 입력하는 매개변수
ex) print(“문장”, end=“ ”)


리턴

•자료없이 리턴하기

      함수 내부에서는 return이라는 키워드를 사용할 수 있다

        이 키워드는 함수를 실행했던 위치로 돌아가라는 뜻으로 함수가 끝나는 위치를 의미한다

 

자료와 함께 리턴하기

       리턴 뒤에 자료를 입력하면 자료를 가지고 리턴한다

 

아무것도 리턴하지 않기

       None 출력한다

 

 

global 키워드

함수 내부에서 함수 외부에 있는 변수를 참조하지 못한다

참조 : 변수에 접근하는 것

함수 내부에서 함수 외부에 있는 변수라는 것을 설명하기 위해 사용

global 변수이름

 

튜플 

함수와 함께 많이 사용되는 리스트와 비슷한 자료형. 리스트와 다른 점은 한번 결정된 요소는 바꿀 수 없다

(데이터, 데이터, 데이터, … )

 

튜플은 함수의 리턴에 많이 사용한다. 함수의 리턴에 튜플을 사용하면 여러개의 값을 리턴하고 할당할 수 있다

def test():
      return (10, 20)
a, b= test() //a = 10, b=20 값이 할당된다

 

 

람다  

매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고, 코드 공간 낭비라는 생각이 들 때 함수를 간단하고 쉽게 선언하는 방법

‘간단한 함수를 쉽게 선언하는 방법’

lambda 매개변수 : 리턴 값

 

ex) power = lambda x: x*x

      under_3 = lambda x: x<3

 

filter(), map()

map() 함수는 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성

map(함수, 리스트)

 

filter() 함수는 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해주는 함수

filter(함수, 리스트)

 

[3주차] Chapter 4

 

[기본 미션] 리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 포스팅하기

 

리스트

 

리스트

  • 여러가지 자료를 저장할 수 있는 자료
  • 숫자, 문자, 수식 등의 자료들을 모아서 사용할 수 있게 해주는 특별한 형태의 자료

리스트 선언하고 요소에 접근하기

  • 대괄호([ ])에 자료를 쉼표로 구분해서 입력
  • 대괄호 내부에 넣는 자료를 '요소(element)'라고 부른다
[요소, 요소, 요소, ... ]

 

  • 리스트 기호인 대괄호 안에 들어간 숫자를 '인덱스'라고 부른다
  • 인덱스는 리스트 내부에서 값의 위치를 의미
  • 인덱스는 0부터 센다

대괄호 안에 음수를 넣으면 뒤에서부터 요소를 선택할 수 있다

 

리스트 접근 연산자를 이중으로 사용 가능

 

리스트 안에 리스트를 사용 가능

 

리스트에서의 IndexError 예외

  • 리스트의 길이를 넘는 인덱스로 요소에 접근하려고 할 때 발생하는 예외

리스트 연산자 : 연결(+), 반복(*), len()

  • '+': 문자열 연결 연산자
  • '*': 문자열 반복 연산자 
  • len()함수: 문자열의 글자수(길이)

 

 

리스트에 요소 추가하기 : append, insert, extend

  • 리스트명.append(요소) : 리스트 뒤에 요소를 추가
  • 리스트명.insert(위치, 요소) : 리스트 해당 위치에 요소를 추가
  • 리스트명.extend([리스트]) : 한번에 여러 요소 추가

 

 

리스트에 요소 제거하기

  • 인덱스로 제거하기 : del, pop
    • del 리스트명[인덱스] : 특정 인덱스에 있는 요소를 제거. 범위 지정해 리스트 요소를 한꺼번에 제거 가능
    • 리스트명.pop(인덱스) : 제거할 위치에 있는 요소 제거. 매개변수 입력하지 않으면 마지막 요소를 제거

 

 

  • 값으로 제거하기 : remove
    • 리스트.remove() : 리스트 내부에 있는 값으로 제거
  • 모두 제거하기 : clear
    • 리스트.clear() : 리스트 내부의 요소를 모두 제거

 

리스트 내부에 있는지 확인하기 : in/not in 연산자

  • 값 in 리스트 >> True, False로 출력

 

for 반복문 : 리스트와 함께 사용하기

for 반복자 in 반복할 수 있는 것:
     코드

 

 

 

 

 

딕셔너리

 

딕셔너리

  • 키를 기반으로 값을 저장

딕셔너리 선언하고 요소에 접근하기

  • 중괄호({ })로 선언하며, '키 : 값' 형태를 쉼표( , )로 연결해서 만든다
  • 키는 문자열, 숫자, 불등으로 선언할 수 있다

변수 = {

    키 : 값,

    키 : 값,
    ...
    키 : 값

}

 

  • 요소에 접근할 때는 리스트처럼 딕셔너리 뒤에 대괄호({ })를 입력하고 내부에 인덱스처럼 키를 입력
  • 선언할 때는 중괄호({ })를 사용하지만 요소에 접근할 때는 대괄호([ ])를 입력하고 내부에 키를 입력

 

 

 

딕셔너리의 키가 여러개의 자료를 가지고 있는 리스트일 때는 인덱스를 지정하여 리스트 안의 특정 값을 출력할 수도 있다

 

 

딕셔너리의 문자열 키와 관련된 실수

  • 딕셔너리의 키에 단순한 식별자를 입력하면 이를 변수로 인식한다
  • 키를 문자열로 사용할 때는 반드시 따옴표를 붙여줘야 한다

딕셔너리에 값 추가하기/제거하기

  • 딕셔너리[새로운 키] = 새로운 값 : 값 추가
  • del 딕셔너리["특정 키"] : 해당 요소 제거

del 키워드 사용

 

 

 

KeyError 예외

  • 딕셔너리에 존재하지 않는 키에 접근하면 KeyError 발생한다

딕셔너리 내부에 키가 있는지 확인하기 : in, get()

  • key in dictionary >> True, False로 출력
  • dictionary.get("key") >> 존재하지 않는 키에 접근할 경우 None 출력

for 반복문 : 딕셔너리와 함께 사용하기

for 키 변수 in 딕셔너리 :
    코드

 

 

 

범위 자료형

 

범위

  • 리스트, 딕셔너리 외에 for 반복문과 함께 많이 사용되는 범위 자료형
  • 매개변수에 숫자를 한 개 넣는 방법 
# 0 ~ A-1 까지의 정수로 범위를 만든다
range(A) // A는 숫자

 

  • 매개변수에 숫자를 두 개 넣는 방법
# A ~ B-1 까지의 정수로 범위를 만든다
range(A, B) // A와 B는 숫자

 

  • 매개변수에 숫자를 세 개 넣는 방법
# A ~ B-1 까지의 정수로 범위를 만드는데 앞뒤의 숫자가 C만큼의 차이를 가진다
range(A, B, C) // A, B, C는 숫자

 

 

[선택 미션] p.157쪽의 1번 문제의 답 쓰고 인증샷

 

 

+ Recent posts