이번엔 30개의 원소를 가진 리스트에서 입력값으로 주어지는 요소를 제거하는 문제이다. 미리 리스트를 생성해 두고, 주어지는 값을 remove()를 이용해 제거한다. 사실 미리 알아보지 않고 그냥 이름이 remove()이길래 사용했는데 맞았다. 파이썬은 제법 직관적인 녀석이다. import sys result = [] for i in range(30): result.append(i + 1) for i in range(28): result.remove(int(sys.stdin.readline())) print(min(result), max(result), sep='\n')
이번엔 주어진 값 중에 최대값이 몇 번째 위치하는지 판별하는 문제이다. 최대값을 찾는 함수 max()를 이용해 값을 구한 뒤에, 역시 리스트에서 바로 지원하는 index()를 사용하면 끝. 이쯤 되니까 배열의 존재 의미가 의심스럽다. 그래서 없애버린 건지도.. import sys a = [] for i in range(9): a.append(int(sys.stdin.readline())) print(max(a), a.index(max(a)) + 1, sep='\n')
N개의 정수가 주어졌을 때 최대, 최소값을 찾는 문제이다. 리스트 단원이니까 리스트에 넣어서 해결했다. 파이썬에는 리스트에서 최대, 최소값을 골라주는 함수가 마련되어 있다. 이름도 간결하게 max()와 min(). 자바의 배열에는 이와같은 함수가 마련되어 있지 않아서 for문을 돌거나 할 필요가 있어서 잘 쓰지 않는데, 파이썬은 바로 지원해주니까 좋다. import sys n = int(sys.stdin.readline()) list = list(map(int, sys.stdin.readline().split())) print(min(list), max(list))
문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. 출력 X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다. 풀이 파이썬의 리스트는 출력할 때 '*'를 앞에 붙여주면 대괄호 없이 원소만 출력할 수 있다. 그리고 한 줄 입력 받아서 int로 매핑한 뒤에 바로 리스트로 만드는 것도 좋았다. import sys n, x = map(int, sys.stdin.readline().s..
문제 시골에 있는 태양이의 삼촌 댁에는 커다란 참외밭이 있다. 문득 태양이는 이 밭에서 자라는 참외가 도대체 몇 개나 되는지 궁금해졌다. 어떻게 알아낼 수 있는지 골똘히 생각하다가 드디어 좋은 아이디어가 떠올랐다. 유레카! 1m2의 넓이에 자라는 참외 개수를 헤아린 다음, 참외밭의 넓이를 구하면 비례식을 이용하여 참외의 총개수를 구할 수 있다. 1m2의 넓이에 자라는 참외의 개수는 헤아렸고, 이제 참외밭의 넓이만 구하면 된다. 참외밭은 ㄱ-자 모양이거나 ㄱ-자를 90도, 180도, 270도 회전한 모양(┏, ┗, ┛ 모양)의 육각형이다. 다행히도 밭의 경계(육각형의 변)는 모두 동서 방향이거나 남북 방향이었다. 밭의 한 모퉁이에서 출발하여 밭의 둘레를 돌면서 밭경계 길이를 모두 측정하였다. 예를 들어 참..
문제 문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오. 부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다. 예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른 것의 개수는 12개이다. 입력 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. 출력 첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다. 풀이 처음엔 어떻게든 조합을 이용해서 풀어야 하는 문제라고 생각했는데 전혀 아니었다. 생각보다 쉬운 문제였는데도 멀리멀리 돌아왔지만 하여간 풀기는 풀었다. 문자..
문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어 있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 풀이 드디어 리스트, 말하자면 자료주고의 초입에 도달했다. 어제 잠깐 살펴본 바로는 파이썬에는 따로 배열이라는 자료형은 없고 리스트와 튜플이 존재하는데, 이 두 녀석은 여러모로 특이한 구석이 있어서 여기에 정리하기 보다는 따로 글을 작성해야 하는 수준이다. 아무튼 문제에 주어진 대로 입력을 받아서 리..
역시 간단한 문제이자 반복문 단원의 마지막 문제이다. 별 거 없어서 그냥 넘어갈까 했으나 흥미로운 구석이 약간은 있어서 가져왔다. 그 구석은 바로, 파이썬에는 우리들의 친구 증감 연산자(++, --)가 존재하지 않는다는 사실이다. 그냥 += 1, -= 1로 처리하는 모양이다. 증감연산자를 제거하게 된 배경에 대해서도 조금 궁금하지만, 이건 더 궁금해지면 알아보기로 하자. 일단 코드는 아래와 같다. a = int(input()) b = (a % 10) * 10 + (a // 10 + a % 10) % 10 cycle = 1 while b != a: cycle += 1 b = (b % 10) * 10 + (b // 10 + b % 10) % 10 print(cycle)
문제 자체는 설명할 것도 없는 수준이다. 입력이 들어오는 만큼 숫자를 더해서 출력하는 것. 다만 문제의 개수가 주어지지 않아 입력이 끝나는 시점을 모르고 시작하게 된다. 이를 해결하기 위해 while문을 포함한 이것저것을 공부해 사용하게 되었는데, 처음 배우는 것들이 많아 블로깅을 하기로 했다. 우선 while문은 그 사용법이 자바와 크게 다르지 않아 생략하고, 파이썬의 불(bool) 타입, 자바에선 불리언이라 불리는 타입은 첫 글자가 대문자로 시작한다는 걸 배웠다. 그리고 try - except 구문을 배웠는데, try 안쪽의 명령을 실행하다가 예외가 생기면, 그러니까 숫자형을 받는데 문자열이 들어온다던가 입력 없이 개행문자만 들어온다던가 하면 except 안의 구문이 실행되는 구조라고 한다. 추가적으..
문제 자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다. 예를 들어, A = { 1, 2, 4 }이고, B = { 2, 3, 4, 5, 6 }라고 할 때, A-B = { 1 }이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다. 입력 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을..
- Total
- Today
- Yesterday
- 남미
- 중남미
- 지지
- 스트림
- 세모
- java
- 유럽
- 백준
- Algorithm
- 스프링
- RX100M5
- Backjoon
- spring
- 면접 준비
- 세계여행
- 유럽여행
- 자바
- 세계일주
- a6000
- 야경
- 동적계획법
- 여행
- 리스트
- Python
- 알고리즘
- 기술면접
- BOJ
- 파이썬
- 칼이사
- 맛집
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |