일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코딩 테스트
- 파이썬
- 그래프
- 구글 킥스타트
- 킥스타트
- OS
- kick start
- 리눅스
- 브루트포스
- 네트워크
- AI
- BFS
- 운영체제
- 알고리즘
- google coding competition
- 순열
- dp
- CSS
- 프로그래머스
- 백준
- nlp
- 프로그래밍
- PYTHON
- 동적 프로그래밍
- linux
- 코딩
- DFS
- 동적프로그래밍
- 코딩테스트
- 딥러닝
- Today
- Total
목록리스트 (6)
오뚝이개발자
list와 tuple은 모두 순차자료형이다. A = [1, 2, 3]# list B = (1, 2, 3)# tuple 하지만 차이점은 리스트의 경우 원소를 바꿀 수 있으나(가변적), 튜플의 경우 원소의 값을 변경할 수 없다(불변적)는 점이다. 이 같은 차이가 왜 중요한 이유가 있다. 만약 아래와 같이 "리스트"를 key로 하는 딕셔너리를 만들고 싶다고 해보자. A = [1,2,3] B = [4,5,6] dictionary = {} dictionary[A] = 1 dictionary[B] = 2 안타깝지만, 위의 코드는 제대로 실행되지 않는다. 아마 실행해보면 TypeError: unhashable type: 'list'라는 에러 문구가 뜰 것이다. 이유는 파이썬에서 딕셔너리의 key값은 hash가 가능토..
파이썬에는 in 연산자가 있다. 보통 리스트, 튜플, 집합, 딕셔너리 같이 연속적인 자료구조에 속한 멤버를 확인하거나 순회할 때 사용한다. 그렇다면 in 연산자의 시간복잡도는 어떻게 될까? List l = [1, 2, 3, 4, 5] # 멤버 확인 if 1 in l : print("1 is in l") # 순회 for i in l : print(i) Tuple t = (1, 2, 3, 4, 5) # 멤버 확인 if 1 in t : print("1 is in t") # 순회 for i in t : print(i) Set s = {1, 2, 3, 4, 5} # 멤버 확인 if 1 in s : print("1 is in s") # 순회 for i in s : print(i) Dictionary d = {1: ..
reverse() 이 메소드는 아무런 값을 반환하지 않고 리스트를 거꾸로 뒤집는다. lst = [1,2,3,4] lst.reverse() print(lst) # [4,3,2,1] reversed() 이 메소드는 순서가 거꾸로 뒤집힌 리스트를 반환한다. lst = [1,2,3,4] for i in reversed(lst): print(i, end='') # 4 3 2 1
파이썬에서 input을 처리할 때 가령 110 001 010 과 같은 배열이 input으로 들어올 때가 있다. 이를 2차원 list에 넣고자 할 때는 다음과 같이 하면 된다. two_dimen_list = [list(input()) for i in range(3)] 위 실행의 결과값은 [['1','1','0'],['0','0','1'],['0','1','0']]이 된다. 이 외에도 특정한 값으로 2차원 리스트를 초기화하고 싶을 때가 있다. 이 땐 다음과 같이 해주면 된다. two_dimen_list = [[-1]*3 for i in range(3)] 위 실행의 결과값은 [[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]이 된다.
파이썬을 사용하면서 공백으로 구분되지 않은 문자열을 입력으로 받을 때가 있다. 이 때 각 문자열을 리스트의 한 원소로 넣고 싶을 때가 있다. 가령 "110"을 ['1', '1', '0']으로 넣고자 할 때가 그러하다. 이런 경우 list()함수를 사용해주면 된다. >>>string = "110" >>>list(string) ['1', '1', '0'] input으로 입력받은 string을 int로 변환시켜 위와 같이 넣고 싶을 때는 map함수를 사용해주면 된다. n = list(map(int, list(input()))) print(n) 위 코드의 input으로 110을 넣어주면 결과로 ['1', '1', '0']이 아닌 [1,1,0]이 나오게 된다.
문제 https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 생각의 흐름 좀 많이 헤멨던 문제이다...에러 원인을 찾지 못해서... 일단 문제를 분석해보자면 리스트의 원소들을 입력으로 받아 순열을 구하는 문제인데 까다로운 부분은 원소 중에 중복되는 것들이 있다는 점이다. 다시 말해 [1,9,3,9]과 같은 리스트인데 순열을 구할 때 두 개의 9를 서로 다른 원소로 생각해 (9,9)가 두 번 나오게 되는 경우가 발생한다. 이를 해결해야 한다...