본문 바로가기

728x90

algorithm

[백준알고리즘] 1158, 1168번: 요세푸스 문제, 요세푸스 문제 2 -Python [백준알고리즘] 1158, 1168번: 요세푸스 문제, 요세푸스 문제 2 -Python https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net https://www.acmicpc.net/problem/1168 1168번: 요세푸스 문제 2 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 100,000) www.acmicpc.net * 1168번은 재채점으로 현재 통과되지 않습니다. 시간내서 다시 풀어보겠습니다. (20210203) * 먼저, 요즘 C++로 풀고 있기 때문에 C++로 풀어보았고 꽤 오랜시간이.. 더보기
[백준알고리즘] 1406번: 에디터 -Python [백준알고리즘] 1406번: 에디터 -Python https://www.acmicpc.net/problem/1406 1406번: 에디터 문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 www.acmicpc.net 이번 문제는 시간 제한이 매우 짧다. 무시하고 리스트와 현재 커서의 위치를 포인팅 하는 변.. 더보기
[백준알고리즘] 10820번: 문자열 분석 -Python [백준알고리즘] 10820번: 문자열 분석 -Python https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다. www.acmicpc.net 이번 문제는 문자의 타입을 구분하는 문제이다. 파이썬으로 풀었기 때문에 is~()라는 메서드들을 이용해서 간단하게 해결했다. 파이썬이 아니라 다른 언어로 해결을 하려고 한다면 아스키코드표를 이용하면 될 것이다. isupper()의 경우 문자가 65~90에 해당할 것이고, islower()의 경우에는 97~122에 해당할 것이다. 숫자.. 더보기
[백준알고리즘] 11652번: 카드 -Python [백준알고리즘] 11652번: 카드 -Python https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. www.acmicpc.net 문제를 풀기 위해서 collections 모듈의 Counter 클래스를 생각했다. 딕셔너리 형태로 반환받은 다음에 정렬을 시키려다가 더 간단해 보이는 방법으로 풀기로 했다. 문제를 푼 방식은 간단하다. 리스트로 하기에는 너무.. 더보기
[백준알고리즘] 10825번: 국영수 -Python [백준알고리즘] 10825번: 국영수 -Python https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자열이고, 길이는 10자리를 넘지 않는다. www.acmicpc.net 간단한 정렬문제이다. 요즘 정렬 문제들을 푸는데 파이썬으로는 너무 간단하게 풀려서.... 몇 가지 문제를 제외하고는 안 올릴 예정이고 대신 Sorting Algorithm을 복습할 겸 공부해서 올려야겠다. 이 문제도.. 더보기
[백준알고리즘] 11650, 11651번: 좌표 정렬하기, 좌표 정렬하기 2 -Python [백준알고리즘] 11650, 11651번: 좌표 정렬하기, 좌표 정렬하기 2 -Python https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 .. 더보기
[백준알고리즘] 11052번: 카드 구매하기 -Python [백준알고리즘] 11052번: 카드 구매하기 -Python https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 반드시 N개를 구매하면서 가장 비싸게 주고 사는 경우를 구해야 한다. 입력받은 값으로부터 누적해 나가면서 i개를 살 때 가장 비싸게 주는 값을 구해나갔다. 최종적으로 N개를 구매할 때 가장 비싸게 사는 방법을 계산했다. 각 인덱스 마다 값을 구하기 위해서 다음과 같이 생각했다. 1개를 살 때: 0 + 1 2개를 살 때: 0 + 2 1 + 1 3개.. 더보기
[백준알고리즘] 2011번: 암호코드 -Python [백준알고리즘] 2011번: 암호코드 -Python https://www.acmicpc.net/problem/2011 1 101010 ->1 처음에 푼 코드에서 몇 자리 이어지냐에 따라서 cnt를 세는데 cnt[i] = cnt[i-1] + cnt[i-2]를 구하기 위해서 길이가 3인 리스트를 이용했다. import sys mod = 1000000 N = [0] N += list(map(int, list(sys.stdin.readline().strip()))) cnt = [1, 1, 1] res = 1 for idx in range(1, len(N)): if N[idx] == 0 and N[idx-1] != 1 and N[idx-1] != 2: res = 0 break elif N[idx] == 0: re.. 더보기

728x90