https://www.acmicpc.net/problem/2745
파이썬에서의 자료구조
여러개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라함. 이러한 컨테이너 자료형의 데이터 구조를 자료 구조.
리스트 :순서가 있는 가변적인 데이터 구조, 리스트는 같은 타입이 아니어도 다양한 데이터 타입의 요소를 포함할 수 있으며, 요소를 수정하거나 삭제할 수 있음 []
튜플 : 순서가 있는 불변의 데이터 구조, 한 번 정의되면 요소를 변경하거나 삭제할 수 없습니다. 다양한 데이터 타입을 포함할 수 있음 ()
딕셔너리 : 키와 값의 쌍으로 구성된 데이터 구조, 각 키는 유일해야 하며, 키를 통해 해당 값을 빠르게 조회할 수 있으며, 키와 값 모두가 변할 수 있음 {}
셋트 : 순서가 없고, 중복된 데이터가 허용되지 않는 데이터 구조, 중복된 요소를 추가하려고 하면 자동으로 제거됨 {}
리스트
- 배열과 같이 여러 개의 데이터를 나열한 자료 구조
- [] 를 이용해서 선언, 데이터 아이템 구분은 ',' comma를 이용
- 데이터 타입 문자열, 정수형, 실수형 모두 가능함
인덱스
- 리스트 아이템은 인덱스를 이용해서 조회 가능함
- 존재하지 않는 잘못된 인덱스를 사용하면 오류남
enumerate함수 ( 이번 문제를 풀면서 새로 공부한 내용 )
- `enumerate()` 함수는 Python에서 반복 가능한 객체(iterable)와 함께 인덱스와 값을 동시에 가져오는 데 유용한 함수
- 리스트, 튜플, 문자열 등의 반복 가능한 객체를 순회하면서 각 항목의 인덱스와 값을 동시에 처리할 수 있다.
- 문법은 이런식으로 쓰이며 `enumerate(iterable, start=0)` `iterable`: 반복 가능한 객체 (예: 리스트, 튜플, 문자열 등)
`start`: 인덱스 시작값 (기본값은 0)을 넣는다.
- 반복 가능한 객체를 순회하면서 각 항목의 인덱스와 값을 튜플 형태로 반환하는 것이다.
# 리스트를 사용할때 fruits = ["apple", "banana", "cherry"] for index, fruit in enumerate(fruits): print(f"Index {index}: {fruit}") # 출력 Index 0: apple Index 1: banana Index 2: cherry # 문자열을 사용할 때 word = "hello" for index, char in enumerate(word): print(f"Index {index}: {char}") # 출력 Index 0: h Index 1: e Index 2: l Index 3: l Index 4: o # 시작 인덱스 지정시 animals = ["dog", "cat", "rabbit"] for index, animal in enumerate(animals, start=1): print(f"Animal {index}: {animal}") # 출력 Animal 1: dog Animal 2: cat Animal 3: rabbit |
백준 2745 진법 변환 문제
- 이 문제에서 enumerate()를 사용하여 역순으로 처리한 문자열 N의 각 문자와 그 인덱스를 사용하게 코드를 구성했다.
- enumerate()는 문자와 해당 문자의 인덱스를 동시에 제공하고 있으므로, 이를 활용해서 다음과 같이 계산했다.
N, b = input().split() ary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" N = N[::-1] # 문자열을 역순으로 변환 result = 0 for i, n in enumerate(N): result += (int(b) ** i) * ary.index(n) # 각 자리의 값을 계산하여 result에 더함 print(result) |
내가 생각한 순서
- N을 역순으로 변환해서 enumerate()를 사용해 각 문자의 인덱스와 값을 동시에 가져온다음 b진법을 이용해 10진법으로 변환해 result에 출력
- 여기서 ary.index(n) 는 문자를 핻강 숫자로 변환시키는 것이고, (int(b) ** i)는 현재 자리의 위치에 해당하는 b의 거듭제곱을 계산
- 이 과정을 통해 b진법으로 표현된 수를 10진법으로 변환한 것이다.
'코딩테스트' 카테고리의 다른 글
백준 2869 : 달팽이는 올라가고 싶다. (1) | 2024.09.26 |
---|---|
백준 1193 : 분수찾기 (0) | 2024.09.26 |
백준 1062번 가르침 (0) | 2024.09.24 |
백준 2903번 중앙 이동 알고리즘 (0) | 2024.09.23 |
백준 2720번 세탁소 사장 동혁 문제 풀이 (0) | 2024.09.20 |