문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열 번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 풀이 갑자기 웬 중복값 제거..? 갸웃하면서 셋을 이용해 풀어봤다. 리스트를 이용해 푸는 방법보다 셋으로 간편하게 푸는 방법이 먼저 생각나서 하는 수 없었다. 조금 진도에서 벗어나지만 set()을 한 번..
목차 Before Init 짧게 요약할 수 있을지 모르겠지만 시작해 보자. 파이썬은 굉장히 객체지향적인 프로그래밍 언어이다. 제목에 자료형이라고 적어두고 갑자기 왜 객체지향이 나오냐 하면, 파이썬에는 기본형 자료형이라는 것이 존재하지 않는다. 참조형 자료형 뿐이다. 즉 아래와 같은 변수 A가 존재할 때, A = 1 A에 저장되는 값은 숫자 1이 아니라 정수형 객체 1의 주소가 된다. 또한 위 변수 선언에서 알 수 있듯이, 파이썬은 동적으로(내부적으로 알아서) 변수의 타입을 지정한다. 물론 원하지 않으면 변경도 가능하다. 추가로 아마 다른 글에서 언급하게 되겠지만 위와 같은 정수형은 불변(immutable) 형 자료형인데, 이 말은 한 번 선언된 변수의 값을 바꿀 수 없다는 말이 아니다. 앞서 말했듯 파이..
이번엔 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..
문제 총 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 안의 구문이 실행되는 구조라고 한다. 추가적으..
- Total
- Today
- Yesterday
- Algorithm
- 세모
- java
- 알고리즘
- RX100M5
- 세계일주
- a6000
- 남미
- 백준
- 중남미
- 맛집
- Backjoon
- 자바
- 면접 준비
- 기술면접
- 스프링
- 지지
- 야경
- 스트림
- 세계여행
- 동적계획법
- BOJ
- 유럽여행
- 파이썬
- spring
- 유럽
- 여행
- 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 | 31 |