[ AtCoder ] Boot camp for Beginners - ( AGC 029 ) A - Irreversible operation
·
-- 예전 기록/AtCoder
https://atcoder.jp/contests/agc029/tasks/agc029_a A - Irreversible operation AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp s[i] 번째 문자가 W면, W를 왼쪽으로 가져가기 위해 i 번 만큼 flip 해야 한다. 이전에 W가 k번 나왔다면, i - k 번 만큼 flip 해야 한다. import sys input = sys.stdin.readline s = input().rstrip() result = 0 cnt = 0 for i in range(len(s))..
[ AtCoder ] Boot camp for Beginners - ( ABC 156 ) C - Rally
·
-- 예전 기록/AtCoder
https://atcoder.jp/contests/abc156/tasks/abc156_c C - Rally AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 1부터 100까지 해당 좌표에서 미팅을 열었을 때의 포인트를 전부 계산하여 최소 포인트를 찾는다. import sys input = sys.stdin.readline n = int(input().rstrip()) arr = list(map(int, input().rstrip().split())) result = -1 for i in range(1, 101): now =..
[ BOJ ] 6603 : 로또 ( SILVER 2 ) / Python
·
-- 예전 기록/BOJ
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]) 집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 ..
[ BOJ ] 10997 : 별 찍기 - 22 ( SILVER 2 ) / Python
·
-- 예전 기록/BOJ
문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 차례대로 별을 출력한다. 풀이 과정 재귀 태그가 달려있긴 하지만, 토네이도 만들기를 구현해도 AC를 받는다! import sys input = sys.stdin.readline n = int(input().rstrip()) * 4 - 3 if n == 1: print('*') else: arr = [['*' for _ in range(n)] for _ in range(n+2)] now = [1, n - 1] row = [0, 1, 0, -1] col = [-1, 0, 1, 0] dir = 0 cnt = 0 while True: arr[now[0]][now[1]] = ' ' i..
[ BOJ ] 17087 : 숨바꼭질 6 ( SILVER 2 ) / Python
·
-- 예전 기록/BOJ
문제 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다. 수빈이의 위치가 동생이 있는 위치와 같으면, 동생을 찾았다고 한다. 모든 동생을 찾기위해 D의 값을 정하려고 한다. 가능한 D의 최댓값을 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 105)과 S(1 ≤ S ≤ 109)가 주어진다. 둘째 줄에 동생의 위치 Ai(1 ≤ Ai ≤ 109)가 주어진다. 동생의 위치는 모두 다르며, 수빈이의 위치와 같지 않다. 출력 가능한 D값의 최댓값을 출력한다. 풀이 과정 수빈이는 D 간격으로만 움직일 수 있으므로, D는 동생들과의 거리..
[ BOJ ] 20207 : 달력 ( GOLD 5 ) / Python
·
-- 예전 기록/BOJ
문제 수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장마가 시작되었고, 습기로 인해 달력에 표시한 일정이 지워지려고 한다. 지워지는 것을 막고자 수현이는 일정이 있는 곳에만 코팅지를 달력에 붙이려고 한다. 하지만 너무 귀찮았던 나머지, 다음과 같은 규칙을 따르기로 한다. 연속된 두 일자에 각각 일정이 1개 이상 있다면 이를 일정이 연속되었다고 표현한다. 연속된 모든 일정은 하나의 직사각형에 포함되어야 한다. 연속된 일정을 모두 감싸는 가장 작은 직사각형의 크기만큼 코팅지를 오린다. 달력은 다음과 같은 규칙을 따른다. 일정은 시작날짜와 종료날짜를 포함한다. 시작일이 가장 앞..
[ BOJ ] 13023 : ABCDE ( GOLD 5 ) / Python
·
-- 예전 기록/BOJ
문제 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다. 둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다. 출력 문제의 조건에 맞는 A, ..
[ BOJ ] 15927 : 회문은 회문아니야!! ( GOLD 5 ) / Python
·
-- 예전 기록/BOJ
문제 팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을 보자. 회문 (한국어) palindrome (영어, 프랑스어, 노르웨이어, 그리스어, 라틴어) 回文 (일본어, 중국어) palindrom (독일어, 덴마크어) palindromi (핀란드어) palíndromo (스페인어, 포르투갈어) palindromo (이탈리아어, 에스페란토어) палиндром (러시아어) قلب مستو (아랍어) 뭔가 이상한 점이 보이지 않는가? 그 어떤 언어에서도 팰린드롬을 뜻하는 단어는 팰린드롬이 아니다! 많은 사람들이 추구하는 “대칭의 아름다움”은 그저 ..
[ CodeUp ] 코드업으로 꾸준히 PS 연습하기 11일차 ( 1106 ~ 1115 )
·
-- 예전 기록/CodeUp
1106 16진수 출력법을 이용해 풀이할 수 있다. ( 0x80000000, 0x7FFFFFFF ) 1107, 1108 반복문을 이용하여 풀이할 수 있다. 1109 입력받은 이름, 나이, 부서코드, 보안키를 그대로 출력한다. 1110 입력받은 정수를 그대로 출력한다. 1111 입력받은 정수에 %를 붙여 출력한다. ( C에서는 %% 를 이용해 %를 출력한다. ) 1112 입력받은 두 정수를 그대로 출력한다. 1113 입력받은 두 정수를 바꿔서 출력한다. 1114 입력받은 두 정수의 합을 출력한다. 1115 입력받은 두 정수의 합을 출력할 때, 64비트 정수형 값이 계산되도록 큰 자료형을 사용한다.
[ BOJ ] 21610 : 마법사 상어와 비바라기 ( GOLD 5 ) / Python
·
-- 예전 기록/BOJ
문제 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지한다. 바구니에 저장할 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 의미하고, A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미한다. 격자의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다. 마법사 상어는 연습을 위해 1번 행과 N번 행을 연결했고, 1번 열과 N번 열도 연결했다. 즉, N번 행의 아래에는 1번 행이, ..
[ BOJ ] 19539 : 사과나무 ( GOLD 5 ) / Python
·
-- 예전 기록/BOJ
문제 이하는 최근 사과나무 씨앗을 구매하여 농장 뒷뜰에 일렬로 1번부터 N번까지 심었다. 이 나무들의 초기 높이는 모두 0이다. 사과나무를 무럭무럭 키우기 위해 이하는 물뿌리개 2개를 준비했다. 한 물뿌리개는 나무 하나를 1만큼 성장시키고, 다른 물뿌리개는 나무 하나를 2만큼 성장시킨다. 이 물뿌리개들은 동시에 사용해야 하며, 물뿌리개를 나무가 없는 토양에 사용할 수는 없다. 두 물뿌리개를 한 나무에 사용하여 3만큼 키울 수도 있다. 물뿌리개 관리 시스템을 전부 프로그래밍한 이하는 이제 사과나무를 키워보려고 했다. 그 순간, 갊자가 놀러와서 각 사과나무의 높이가 이런 배치가 되었으면 좋겠다고 말했다. 이제 이하는 약간 걱정이 되기 시작했는데, 갊자가 알려준 사과나무의 배치를 이 프로그램 상으로 만들어내지..
[ AtCoder ] Boot camp for Beginners - ( ABC 065 ) B - Trained?
·
-- 예전 기록/AtCoder
https://atcoder.jp/contests/abc065/tasks/abc065_b B - Trained? AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 1번 버튼부터 시작해서, 1번 버튼에서 이어지는 버튼인 a[1]번 버튼으로, a[1]번 버튼에서 이어지는 버튼인 a[a[1]]번 버튼으로, a[a[1]] 번 버튼에서 이어지는 버튼인 a[a[a[1]]] 버튼으로.... 계속해서 찾아가면서 2번 버튼에 도달하면 버튼을 거쳐간 횟수를 출력한다. 방문 배열을 추가해서, 만약 이전에 이어졌던 버튼에 다시 도달했다면 2번 ..