https://www.acmicpc.net/problem/3029 3029번: 경고 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간 www.acmicpc.net 📝 알고리즘 시간 계산을 할 때 주의할 점은 24시간이 넘어갔냐 아니냐를 컴퓨터가 판단하도록 지시해야 하는 것이다. 20시와 4시는 숫자만 봤을 때 당연히 20이 더 크지만, 만약 다음날 4시를 뜻하는 거라면 4시가 더 늦은 시간이기 때문에, 이를 컴퓨터가 알아차리도록 해야 한다. 이 문제의 예시에는 두 가지 케이스가 잘 나와있다. 첫 번째 케이스는 다음날 새벽 4시를 뜻하므로 ..
Koala - 9기/기초 알고리즘 스터디
문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 소스코드 import math n, b = map(str, input().split(' ')) b = int(b) D = {} for i in range(10): D[i] = str(i) for i in range(26): D[i+10] = chr(65+i) d = {v: k for k, v in D.items()} li = [] for i in range(len(n)): li.append(d..
문제 코드 n=int(input()) a={} for i in range(n): b=str(input()) if b not in a: a[b]=1 else: a[b]+=1 value=max(list(a.values())) key=list(a.keys()) x=[] for i in range(len(key)): if a[key[i]]==value: x.append(int(key[i])) x.sort() print(x[0]) 풀이 이전에 연습했던 딕셔너리 문제와 비슷해보여서 막힘없이 풀었다. 단순히 딕셔너리에 이미있으면 1더해주고 없으면 1저장하는식으로 입력하고 가장 큰수를 가져와서 그 key를 출력했다.
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..
문제 팰린드롬은 앞에서부터 읽을 때와 뒤에서부터 읽을 때가 똑같은 단어를 의미한다. 예를 들어, 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 리스트의 내용을 공백없이 순서대로 출력
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/17502 17502번: 클레어와 팰린드롬 입력으로 주어진 문자열을 팰린드롬이 되도록 '?' 문자들을 적절한 알파벳 소문자들로 바꾸어 출력합니다. 방법이 여러 가지인 경우 그 중 하나만 출력합니다. www.acmicpc.net 문제 코드 문제 풀이 a를 받아 먼저 a의 길이가 홀수인지 확인, 홀수인 경우 가운데 문자는 상대되는 짝이 없으므로, 이것이 "?" 라면 이것을 다른 문자로 바꾸어 줌. 다음으로 for 문을 통해 문장 a를 반복. 만약 a[i] 가 "?" 라면, 그에 상대되는 a[-i-1] 도 "?" 인지 확인. 둘 다 "?" 라면 이 둘을 동일한 다른 문자로 바꾸어줌. 만약 a[-i-1] 이 "?" 가 아니라면, a[i] 를 a[-i-1]..