아스키코드 ↔ 문자 사이의 변환에 대한 문제이다. 답은 한 줄 짜리라 별로 거들 것이 없지만, 파이썬에서 아스키코드를 다루는 법은 처음이니까 정리할 겸 글을 남긴다. 파이썬은 아스키코드 변환을 위한 기본 함수를 제공한다. ord('a'): 문자 → 아스키코드 chr(97): 아스키코드 → 문자 hex(97): 아스키코드 → 헥사코드 사용법은 다른 기본함수와 마찬가지로 바로 불러다 쓰는 식이다. 정답을 포함해 코드를 보면 아래와 같다. print(ord(input())) ord('a') #97 chr(97) #a
정수 n개가 들어있는 리스트가 주어졌을 때 그 합을 반환하는 함수를 정의하는 문제이다. 안 그래도 슬슬 클래스나 함수에 대해 공부할 때가 되었다고 느끼고 있었는데, 마침 시작이 쉽고 좋다. 함수의 특징이나 세세한 사항에 대해서는 다른 쪽에 글을 파기로 하고, 일단 파이썬의 함수 정의는 아래와 같이 매우 간결하다. def solve(a): return sum(a) 이게 그대로 문제의 답이 된다. 함수를 정의할 때조차 매개변수의 자료형을 명시하지 않아도 된다. 이는 오버로딩 측면에서 굉장히 객체지향적이라 느껴졌다.
문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는 데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행..
문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, ..
문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 풀이 파이썬에선 리스트를 자르는 행위를 슬라이스라고 부르는 것 같다. 방식도 써먹을 곳도 굉장히 다양하지만 그건 차차 정리하도록 하고.. 나는 이번에 한 줄로 들어오는 숫자에서 학생의 숫자와 그 점수를 분리하는 데 사용했다. 슬라이싱 역..
문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 풀이 자바로 처음 이 문제를 마주쳤을 때 시간이 조금 소모됐던 기억이 있다. 다행히 아직 ..
문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 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()을 한 번..
이번엔 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')
- Total
- Today
- Yesterday
- 알고리즘
- 백준
- spring
- 맛집
- 파이썬
- RX100M5
- 스프링
- 남미
- 여행
- 세계일주
- 기술면접
- Python
- 면접 준비
- 칼이사
- 자바
- 유럽
- Backjoon
- 야경
- 세계여행
- 지지
- 중남미
- a6000
- Algorithm
- 리스트
- 스트림
- java
- 세모
- 유럽여행
- 동적계획법
- 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 |