https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net [문제] [코드] [풀이] 이 문제를 처음 풀 때는 스택을 사용한다는 것을 생각하지 못해 여러개의 if, elif 문으로 케이스를 분류해서 풀었었다. 블로그에 올라와 있는 다른 분들의 풀이를 보고 그제서야 스택으로 푸는 문제라는 것을 생각해 풀었다. 스택에 push하는 순서는 무조건 오름차순으로 하며, pop을 통해..
문제 https://www.acmicpc.net/problem/1316 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출..
문제 9226번: 도깨비말 도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다. 영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하 www.acmicpc.net 문제 설명 단어의 맨 앞 글자가 모음(a, e, i, o, u)일 때 까지 글자를 뒤로 넘긴다. (frog -> rogf -> ogfr) 그런 다음 단어 뒤에 'ay'를 붙여 완성한다. (ogfray) 코드 #include #include #include #include #include #include using namespace std; int main() { char vowel[] = {'a', 'e', 'i', 'o', 'u'}; string word, tmp..
문제 https://www.acmicpc.net/problem/2110 Algorithm 임의의 두 공유기 사이의 거리를 늘리게 되면, 이외의 공유기와의 거리가 가까워질 수 있으므로 최대한 평등하게 설치하는 것이 핵심 아이디어다. 이분탐색을 진행하여, 가장 왼쪽부터 시작해 공유기를 설치한 집으로부터 임의의 수 k이상 떨어진 집에 설치하는 것을 반복한다. 더 이상 설치할 수 없는 경우, 설치한 공유기의 개수가 c개 이상이라면 k를 줄인 후 재설치한다. c개 미만이라면, k를 키워 재설치한다. 이분탐색이 끝난 후의 k가 출력 답안이 된다. Code #include #include #include using namespace std; int n,c; vector home; void INPUT() { ios_b..
문제 팰린드롬은 앞에서부터 읽을 때와 뒤에서부터 읽을 때가 똑같은 단어를 의미한다. 예를 들어, eve, eevee는 팰린드롬이고, eeve는 팰린드롬이 아니다. 단어가 주어졌을 때, 팰린드롬인지 아닌지 판단해보자. 문제 코드 문제 풀이 string a를 선언한 후 문자열을 입력받음. 앞과 뒤에서 가운데로 좁혀오는 코드를 작성하려 했으므로 범위는 0부터 a.length/2로 정하는 for문을 작성함. for문 속에 앞과 뒤에서 1씩 줄여오며 회문인지 검사함. 만약 대칭되는 자리의 문자가 같다면 n을 1씩 더해줌. for문을 벗어난 후 회문이라면 범위로 정한 a.length/2까지 계속 n의 값이 더해졌을 것이기 때문에 if문을 사용하여 n과 a.length/2의 값이 같다면 혹은 문자열이 하나 입력되었다..
2789번: 유학 금지 (acmicpc.net) 2789번: 유학 금지 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, www.acmicpc.net 코드 해석 문자열 s 입력 받기 삭제해야 되는 알파벳들을 포함한 문자열인 'CAMBRIDGE'를 delw에 저장 답이 저장 될 빈 리스트 생성 입력 받은 문자열을 알파벳 하나씩 검사 s의 한 알파벳이 delw에 포함되어 있지 않다면 res 리스트에 추가 포함되어 있다면 추가하지 않고 다음 알파벳 검사 res 리스트의 내용을 공백없이 순서대로 출력
문제 일차원 좌표상의 점 N개와 선분 M개가 주어진다. 이때, 각각의 선분 위에 입력으로 주어진 점이 몇 개 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N과 선분의 개수 M이 주어진다. (1 ≤ N, M ≤ 100,000) 둘째 줄에는 점의 좌표가 주어진다. 두 점이 같은 좌표를 가지는 경우는 없다. 셋째 줄부터 M개의 줄에는 선분의 시작점과 끝점이 주어진다. 입력으로 주어지는 모든 좌표는 1,000,000,000보다 작거나 같은 자연수이다. 틀린 풀이 # 선분 위의 점 # 복습 횟수:0, 00:30:00, 복습필요:O import sys si = sys.stdin.readline N, M = map(int, si().split()) point_list = list(map(int, ..
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 분석 1. "."이 입력의 종료 조건으로 주어졌으므로 while문을 이용해 반복문을 만든다. 2. 소괄호와 대괄호의 쌍 여부를 확인해야 하므로 stack 리스트를 이용해 두 경우를 판별한다. 3. 어떠한 하나의 경우라도 문자열이 균형을 이루지 못할 경우 지체 없이 break문을 통해 루프를 탈출하고 no를 출력해야한다. 소스 코드 1. i가 소괄호 ( 이거나 대괄호 [ ..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 📝 알고리즘 들어오는 순서에 상관없이 숫자 7개의 합을 100으로 맞춰야 하기 때문에 파이썬 itertools의 combinations를 사용했다. 알고리즘은 잘 생각했는데 출력물이 깔끔하지 않아서 아쉬웠다. 당장 생각나는 게 이 코드여서 제출을 하고, 다른 사람의 코드를 보니 sorted를 for문의 반복횟수로 지정해주었다. 파이썬 for문은 어떤 시퀀스(sequence)를 반복하는 문법이므로 sorte..
https://www.acmicpc.net/problem/2596 2596번: 비밀편지 병현이는 지은이에게 문자 A, B, C, D, E, F, G, H 로 쓰여진 편지를 날마다 보내는데, 컴퓨터로 보내는 비밀편지로, 한 문자마다 0 또는 1인 숫자 여섯 개를 사용하여 보낸다. 둘 사이의 약속은 다음과 www.acmicpc.net 문제 코드 문제 풀이 먼저 X = {} 에 A ~ H 인 키 값 와 그 밸류값을 정의. 키 값과 밸류값은 따로 key = [] , val = [] 로 리스트화 시킴. 첫 for 문에서 6자리 숫자가 반복될 때 마다 c += 1 을 해줌으로써 현재 몇 번째 반복인지 알 수 있게 함. 1) 입력받은 6자리 숫자가 val = [] 의 값 중 하나와 완전히 일치한 경우, 그에 맞는 키..
https://www.acmicpc.net/problem/15038 15038번: Lounge Lizards Monitor lizards are a kind of reptile known mainly for their cold-bloodedness and addiction to computer screens. Due to their love for digital displays, these scaly creatures spend most of their time at home glued to a small television in the lounge. Confl www.acmicpc.net 문제 분석 난이도 플래티넘5 분류 기하학, LIS(NlogN), 이분탐색, 유클리드 호제법 들어가기 전에 유명한 문..
https://www.acmicpc.net/problem/1316 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다..