문제 문자열 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을..
문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력 듣보잡의 수와 그 명단을 사전순으로 출력한다. 풀이 처음엔 일단 받아서, 답을 구한 후 정렬해서 스트링빌더에 넣어 출력하는 방향을 생각했으나 애초에..
여러 줄의 입력을 받을 때 input()보다 성능이 좋은 입력방법을 연습하는 문제이다. 자바로 치면 BufferedReader정도 되는 녀석. 솔직히 파이썬에도 다른 입력 방식이 있을 거라곤 예상하지 못해서 흥미로웠다. sys.stdin.readline() 메서드는 input() 함수와 사용법이 비슷하지만, 마지막 개행문자까지 입력받기 때문에 이를 잘라주는 .rstrip() 메서드와 함께 사용하는 편이 좋다. 하지만 해당 문제는 따로 잘라주지 않아도 통과하기는 한다. 나온 김에 정리하자면 strip([chars]) - 문자열의 양 쪽 끝에서 chars 제거 lstrip([chars]) - 문자열의 왼 쪽 끝에서 chars 제거 rstrip([chars]) - 문자열의 오른 쪽 끝에서 chars 제거 im..
문제 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다. 영수증에 적힌, 구매한 각 물건의 가격과 개수 구매한 물건들의 총금액 을 보고, 구매한 물건의 가격과 개수로 계산한 총금액이 영수증에 적힌 총금액과 일치하는지 검사해 보자. 입력 첫째 줄에는 영수증에 적힌 총금액 X가 주어진다. 둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다. 이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다. 출력 구매한 물건의 가격과 개수로 계산한 총금액이 영수증에 적힌 총금액과 일치하면 Yes를 출력한다. 일치하지 않는..
- Total
- Today
- Yesterday
- Backjoon
- RX100M5
- BOJ
- spring
- 남미
- 여행
- 백준
- 야경
- 스프링
- 스트림
- 면접 준비
- 자바
- 유럽
- 맛집
- 세계일주
- 기술면접
- 세계여행
- 유럽여행
- 세모
- Python
- java
- 칼이사
- 파이썬
- 동적계획법
- a6000
- 중남미
- Algorithm
- 지지
- 리스트
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |