파이썬으로 알고리즘을 풀다가 enumerate()라는 내장함수를 만나게 되었다. 이 함수의 역할은 순회 가능한(iterable) 객체(리스트, 튜플, 문자열 등)를 입력받아 인덱스와 해당 요소를 동시에 포함하는 iterator를 반환한다. 이를 이용해 반복문에서 인덱스와 요소를 동시에 다룰 수 있으며, 필요하다면 딕셔너리와 같은 자료형으로 매핑할 수도 있다. 바로 코드로 예를 들어보자. fruits = ['apple', 'banana', 'orange'] # 리스트의 인덱스와 값을 출력 for index, fruit in enumerate(fruits): print(index, fruit) 0 apple 1 banana 2 orange 시작 인덱스를 0이 아닌 1로 지정하는 것도 가능하다. fruits ..
목차 컴프리헨션은 여러 가지 뜻이 있지만, 파이썬의 맥락에서는 '함축'이라는 단어가 가장 어울리는 것 같다. 그 뜻대로 파이썬 컴프리헨션이란 리스트, 딕셔너리, 집합 등을 축약해서 만들어주는 기능이다. 처음 접할 땐 '뭐 이렇게까지 해야 하나..' 싶지만 일단 익숙해지면 기존의 방식이 되려 거추장스럽다. 시작하기 전에, 자바로 입문한 내게 있어 배열 선언과 요소 입력은 아래와 같은 방식이었다. arr = [0] * 5 for i in range(5): arr[i] = input() print(arr) ['1', '2', '3', '4', '5'] 물론 작동은 잘한다. 다만 파이썬에는 배열이 따로 없고 리스트가 존재하며, 자바의 배열과 달리 크기가 고정되는 타입이 아니다. 그래서 아래와 같이 고쳐서 사용했..
문제 화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다. 자주 나오는 단어일수록 앞에 배치한다. 해당 단어의 길이가 길수록 앞에 배치한다. 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자. 입력 첫째 줄에는 영어 지문에 나오는 단어의 개수 N과 외울 단어의 길이 기준이 되는 M이 공백으로 구분되어 주어진다...
문제 숫자 카드는 정수 하나가 적혀 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫 자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어 있다. 이 수도 -10,000,000보다 크거나 같고, 10,00..
문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 풀이 간단하게 리스트와 정렬, 문자열과 replace() 함수를 사용해 문제를 풀면 아무리 해도 시간초과가 난다. 이는 리스트 순회나 replace() 함수의 성능이 굉장히 떨어지기 때문인데, 덕분에..
문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 딕셔너리 자료형을 연습할만한 문제가 나왔다. 알파벳 출력 기준이 대문자이기 때문에 입력받은 문자열을 우선 대문자로 바꿔 리스트 a로 만들고 시작했다. count 딕셔너리를 만든 뒤 a리스트를 돌며 알파벳을 키로 삼아 등장 횟수만큼 밸류를 올려주었고, 순회가 끝난 뒤 최대값..
- Total
- Today
- Yesterday
- 세계여행
- 면접 준비
- 중남미
- 자바
- java
- 기술면접
- RX100M5
- a6000
- 지지
- 스트림
- 칼이사
- 야경
- Algorithm
- 맛집
- 동적계획법
- 유럽
- 유럽여행
- 백준
- spring
- 세계일주
- 파이썬
- BOJ
- 알고리즘
- Backjoon
- 남미
- Python
- 여행
- 리스트
- 세모
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |