코테 공부/Python 문법 13

2869 달팽이는 올라가고 싶다( /와 // 차이)

문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B 나무 막대 길이..

Python slicing 자세히 a[::-1]

a라는 list, tuple, string이 있다고 할 때 a[start : end : step] start: 슬라이싱을 시작할 시작위치입니다. end: 슬라이싱을 끝낼 위치로 end는 포함하지 않습니다! step: stride(보폭)라고도 하며 몇개씩 끊어서 가져올지와 방향을 정합니다. >>> a = ['a', 'b', 'c', 'd', 'e'] # 2칸씩 이동하면서 가져옵니다. >>> a[ : : 2 ] ['a', 'c', 'e'] >>> a = ['a', 'b', 'c', 'd', 'e'] # 3칸씩 이동하면서 가져옵니다. >>> a[ -5 : : 3 ] ['a', 'd'] >>> a = ['a', 'b', 'c', 'd', 'e'] # 전체를 거꾸로 가져옵니다. >>> a[ : : -1 ] ['e..

List Comprehension

리스트를 쉽게, 짧게 한 줄로 만들 수 있는 파이썬의 문법 [ ( 변수를 활용해 원하는 값 ) for ( 사용할 변수 이름 ) in ( 순회할 수 있는 값 )] size = 10 arr = [0] * size for i in range(len(size)): arr[i] = i * 2 ''' 이렇게 바꿈''' size = 10 arr = [i * 2 for i in range(size)] 생성되는 리스트의 크기는 순회하는 값에 맞게 자동으로 결정된다 word = '가나다' print([c * 2 for c in word]) ['가가', '나나', '다다'] 더 많은 예제 >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2..

구현 문제: 시각, 왕실의 나이트

1. [이것이 코딩테스트이다] 시각 문제 문제) 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오 입력 예시 5 출력 예시 11475 해결) N = int(input()) result = 0 for i in range(N + 1): for j in range(60): for k in range(60): # 매 시각 안에 '3'이 포함되어 있다면 카운트 증가 # 두자리 숫자는 '3'이 포함되어 있는지 확인하기 어려우므로 문자열로 바꿔서 확인 # in 키워드, find() 함수를 사용하여 특정 문자열 포함되어 있는지 확인 if '3' in str(i) + str(j) + str(k): result +=..

Python: bool, list 복사, 변수 생성

1. Bool "" 거짓 [1, 2, 3] 참 [] 거짓 () 거짓 {} 거짓 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면(" ", [ ], ( ), { }) 거짓이 된다. 2. 리스트 복사 >>> a = [1,2,3] >>> b = a >>> id(a) 4303029896 >>> id(b) 4303029896 >>> a is b # a와 b가 가리키는 객체는 동일한가? True >>> a[1] = 4 >>> a [1, 4, 3] >>> b [1, 4, 3] ## a 리스트의 두 번째 요소를 값 4로 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었다. ## 그 이유는 앞에서 살펴본 것처럼 a, b 모두 동일한 리스트를 가리키고 있기 때문이다. (1) [:] 이용 첫 번째 방법으로는 다..

Python 로또의 최고 순위와 최저 순위[lv.1]

핵심 단계 1. 0의 갯수 / 2. 현 상태에서 당첨 번호와 일치하는 개수 구하기 / 3. 등수 반환 나의 풀이 def solution(lottos, win_nums): answer = [] lottos.sort() win_nums.sort() zero=0 for lotto in lottos: if lotto == 0: zero+=1 n = 0 for lotto in lottos: for ans in win_nums: if lotto == ans: n+=1 if (n+zero)!=0: answer.append(7-(n+zero)) else: answer.append(6) if n!=0: answer.append(7-n) else: answer.append(6) return answer 추가 고려사항: 마..

Python set 내장 함수

값 1개 추가하기(add) 이미 만들어진 set 자료형에 값을 추가할 수 있다. 1개의 값만 추가(add)할 경우에는 다음과 같이 한다. >>> s1 = set([1, 2, 3]) >>> s1.add(4) >>> s1 {1, 2, 3, 4} 값 여러 개 추가하기(update) 여러 개의 값을 한꺼번에 추가(update)할 때는 다음과 같이 하면 된다. >>> s1 = set([1, 2, 3]) >>> s1.update([4, 5, 6]) >>> s1 {1, 2, 3, 4, 5, 6} 특정 값 제거하기(remove) 특정 값을 제거하고 싶을 때는 다음과 같이 하면 된다. >>> s1 = set([1, 2, 3]) >>> s1.remove(2) >>> s1 {1, 3}

Python 자료형: Dict, Set

1. Dict: 대응관계 key, value 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다 딕셔너리 쌍 추가하기 >>> a = {1: 'a'} >>> a[2] = 'b' >>> a {1: 'a', 2: 'b'} {1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 2 : 'b'라는 딕셔너리 쌍이 추가된다. 딕셔너리 요소 삭제 하기 >>> del a[1] >>> a {2: 'b', 'name': 'pey', 3: [1, 2, 3]} Key 값 통해 Value 얻기 >>> grade = {'pey': 10, 'julliet': 99} >>> grade['pey'] 10 Key..

Python Dict 내장 함수

Key 리스트 만들기(keys) >>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'} >>> a.keys() dict_keys(['name', 'phone', 'birth']) a.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 돌려준다. dict_keys 객체는 다음과 같이 사용할 수 있다. 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 없다. >>> for k in a.keys(): ... print(k) ... name phone birth dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 된다. >>> list(a.k..

Python 자료형: List, tuple

3. List 비어 있는 리스트는 a = list()로 생성할 수도 있다. 리스트가 포함된 중첩 리스트 Slicing >>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5] >>> a[2:5] [3, ['a', 'b', 'c'], 4] >>> a[3][:2] ['a', 'b'] [:3] -> 3 미만까지를 의미함 리스트 길이 구하기 >>> a = [1, 2, 3] >>> len(a) 3 문자열과 정수를 더하면(+) TypeError가 발생함 -> 해결책) str을 이용해 정수를 문자열로 바꿔준 뒤 + del 함수를 이용해 리스트 요소 삭제 >>> a = [1, 2, 3] >>> del a[1] ## del a[x]는 x번째 요솟값을 삭제 >>> a [1, 3] 4. Tuple 리스트는 ..