https://www.acmicpc.net/problem/11720 # 문제상황 x = list(str(input())) sum = 0 for i in x: sum += int(i) 저는 맨 처음에 이렇게 코드를 짰었는데요, 실로 비효율적인 코드입니다. 첫 번째로, input() 함수를 통해 입력받는 모든 값들은 '문자열' 자료형으로 입력받습니다. 즉, 1행의 'str(input())' 이라는 코드는 완전히 삽질하는 코드인 셈이죠. 두 번째로, 'for i in x:' 에서 x 자리에는 반복 가능한 자료형만 들어올 수 있으면 됩니다. 반복 가능한 자료형에는 문자열, 리스트, 튜플, 딕셔너리, 집합이 있죠. 저는 x 자리에 반드시 리스트만 올 수 있다고 생각해서 1행에 굳이 'list()' 함수를 사용했었..
내장 함수 자료형을 변환하는 함수(1) 함수 기능 list(x) 반복 가능한 자료형 x를 입력받아 리스트로 만들어 반환 tuple(x) 반복 가능한 자료형 x를 입력받아 튜플로 만들어 반환 자료형을 변환하는 함수(2) - 문자열 ↔ 숫자 함수 기능 int(x, [y]) 문자열 형태의 숫자 또는 수수점이 있는 숫자 등을 입력받아 정수로 변환하여 반환 int(x, y)는 y진수로 표현된 문자열 x를 10진수로 변환하여 반환 str(x) x를 문자열 자료형으로 변환하여 반환 oct(x) 정수 x를 8진수 문자열로 변환하여 반환 hex(x) 정수 x를 16진수 문자열로 변환하여 반환 수학 관련 함수 함수 기능 min(x) 반복 가능한 자료형 x에서 최솟값을 찾아 반환 max(x) 반복 가능한 자료형 x에서 최댓..
https://www.acmicpc.net/problem/4344 # 문제상황 이 문제는 '소수점 셋째 자리까지' 라는 출력 형식이 있습니다. 보통 실수 40을 그냥 출력하게 되면 '40.0'이라고만 출력되지, '40.000'이라고 출력되지 않습니다. 소수점 둘째 자리, 셋째 자리에 있는 0은 생략되죠. 어떻게 하면 '40.000'과 같은 출력 형식을 지킬 수 있을까요? # 해결 소수점의 출력 형식을 지키기 위해서는 문자열 포매팅을 하는 방법을 알아야 합니다. 문자열 포매팅의 방법에는 1. 포맷 코드를 이용하는 방법 2. format 함수를 이용하는 방법 3. f 문자열 포매팅 이렇게 총 3가지 방법이 있는데, 그 중에서 가장 간결하게 코드를 짤 수 있는 'f 문자열 포매팅' 방법을 사용할 것입니다. f..
기본 사용법 name = '홍길동' age = 30 x = f'이름은 {name}, 나이는 {age}입니다.' 정렬 val = 'hi' l = f'{val:10}' # 오른쪽 정렬 ( hi) * 위 코드에서 숫자 10의 의미는 총 10칸을 차지한다는 뜻으로, 'hi' 문자열이 2칸을 채우고 나머지 8칸은 공백으로 저장됩니다. 공백 채우기 val = 'hi' x1 = f'{val:=^10}' # 가운데 정렬하고 공백을 '='로 채우기 (====hi====) x2 = f'{val:!>10}' # 오른쪽 정렬하고 공백을 '!'로 채우기 (!!!!!!!!hi) 소수점 n = 3.141592 x1 = f'{n:0.4f}' # 소수점 4자리까지만 표현 (3.1415) x2 = f'{n:5.4f}' # 소수점 4자리..
딕셔너리 기본 형태 d = dict() d = {Key1:Value1, Key2:Value2, Key3:Value3, ...} - 연관 배열(Associative array), 해시(Hash)와 같은 개념입니다. - Key값의 조건은 아래 3가지가 있습니다. 1) Key에는 변하지 않는 값을, Value는 변할 수 있는 값을 사용한다. 2) Key값은 고유한 값이어야 한다. 즉 중복되면 안된다. 3) Key값으로 리스트, 딕셔너리 등은 올 수 없지만 튜플은 올 수 있다. 딕셔너리 요소 추가 / 삭제 코드 결과 딕셔너리 요소 추가 a = {1:'a'} a['name'] = 'pey' a {1:'a', 'name:'pey'} 딕셔너리 요소 삭제 a = {'A':1, 'B':2} del a['A'] a 또..
튜플과 리스트는 거의 동일하지만 다음과 같은 차이점이 있습니다. 1) 리스트는 []로 둘러싸고, 튜플은 ()로 둘러쌉니다. t = (1, 2, 3) 2) 리스트는 값의 생성, 삭제, 수정이 가능하고 튜플은 값을 바꿀 수 없다. - 따라서 튜플은 값이 항상 변하지 않길 바랄 때 사용합니다. - 실제 프로그램에서는 값이 변경될 때가 많기 때문에 리스트를 더 많이 사용합니다. 3) 튜플이 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 합니다. t = (3,) 4) 괄호를 생략해도 무방합니다. t = 1, 2, 3
집합(set) set()의 괄호 안에 리스트 또는 문자열을 입력하여 집합을 생성할 수 있습니다. 집합의 가장 큰 특징 1) 중복을 허용하지 않는다. 2) 순서가 없다. - 집합은 중복을 허용하지 않기 때문에, 중복을 제거하기 위한 필터 역할로 종종 사용합니다. - 순서가 없는 자료형이기 때문에 인덱싱을 지원하지 않습니다. - 따라서 set에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후 해야합니다. s1 = set([1, 2, 3]) l1 = list(s1) # 리스트로 변환 t1 = tuple(s1) # 튜플로 변환 교집합 / 합집합 / 차집합 s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9)] 코드 결과 교집합 s1 & s2 {4, 5..
https://www.acmicpc.net/problem/2562 # 문제상황 제가 제일 처음에 고안한 답은 아래와 같습니다. max = 0 idx = 0 for i in range(9): x = int(input()) if x > max: max = x idx = i + 1 print(max) print(idx) 하지만 생각해보면 자동으로 최댓값을 찾아주는 max()라든지, 파이썬에서 기본으로 제공해주는 유용한 내장함수들을 거의 쓰지 않은 답안입니다. 파이썬 내장함수를 이용해서 좀 더 효율적인 코드를 짤 순 없을까요? # 해결 우선 앞서 언급했듯이 max() 함수와 리스트의 index() 함수를 이용해 좀 더 간결하게 문제를 풀 수 있습니다. max()는 함수 이름에서 쉽게 유추할 수 있듯, 반복 가능..
1. 책 DB를 넣어주세요. 2. 나의 스터디 흔적을 사진으로 보여주세요. 3. 이번 스터디에서 특별히 좋았던 점이나 어려웠던 점이 있었나요? 새로 알게된 부분이 있다면 알려주세요. 1) 클래스 용어 정리 클래스 틀 객체 클래스(틀)로 찍어낸 것 클래스변수 클래스 안에 선언된 변수. 클래스 변수는 모든 객체에 공유된다. 객체변수 객체에 생성되는 객체만의 변수 메서드 클래스 안에 구현된 함수 생성자(Constructor) 객체가 생성될 때 자동으로 호출되는 메서드 → 메서드 이름을 '__init__'으로 작성 상속 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받는 것 → 'class 클래스명(상속받을 클래스명):' 오버라이딩(덮어쓰기) 부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는..
https://www.acmicpc.net/problem/10871 # 문제상황 1 백준 단계별로 풀어보기를 순서대로 풀어보고 있는 사람들이라면 아마 이 문제에서 처음으로 '수열'을 입력받는 방법에 대해 고민하셨을겁니다. 그동안은 많아봐야 연속된('띄어쓰기'로 구분된) 2개의 수를 입력받는 문제들만 있었죠. 그런 문제상황에서는, a, b = map(int, input().split()) 위와 같은 코드를 구현하면 됐었습니다. 하지만 아래 예시입력과 같이 연속된 3개 이상의 여러 개의 숫자들을 입력받으려면 어떻게 해야할까요? # 해결 1 파이썬에서 제공하는 '리스트'를 사용합니다. 리스트는 여러 개의 값들을 효율적으로 저장할 수 있는 자료형입니다. 기존에 자주 사용했던 'map(int, input().sp..