https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 분석 1. "."이 입력의 종료 조건으로 주어졌으므로 while문을 이용해 반복문을 만든다. 2. 소괄호와 대괄호의 쌍 여부를 확인해야 하므로 stack 리스트를 이용해 두 경우를 판별한다. 3. 어떠한 하나의 경우라도 문자열이 균형을 이루지 못할 경우 지체 없이 break문을 통해 루프를 탈출하고 no를 출력해야한다. 소스 코드 1. i가 소괄호 ( 이거나 대괄호 [ ..
Koala - 9기
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/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 0. 잡담 아이고 로직은 맞았는데 입력 범위가 매우 커서 7트만에 맞았습니다!!를 받았습니다. 만약 알 수 없는 문제로 10%에서 계속 틀리신다면 코드의 모든 부분에 마음 편하게 unsigned long long 자료형을 써보세요. 혹시 답을 보고 푸셨다면 이곳에서 다시 풀어보시면 좋을 것 같습니다. 동일한 문제에 입력 값이 백준보다 작습니다. https://school.progra..
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]..
첫 번째 시도 input = __import__('sys').stdin.readline d = dict() for _ in range(int(input())): n = input() if n in d.keys(): d[n] += 1 else: d[n] = 1 max_value = max(list(d.values())) pos_keys = list() neg_keys = list() for i in d.keys(): if int(i) > 0: pos_keys.append(i) pos_keys.sort() if int(i)
https://www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M> 오른쪽 기준으로 N칸 이 세가지 경우를 생각하면 이동해야할 최소 거리를 구할 수 있다.
문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제 풀이과정 사용자로부터 정수 n을 입력 받은 후 n번 만큼 for 루프를 돌리며 입력을 받는다. 가장 많이 입력된 책을 찾기 위해 책의 이름을 key값으로 두고, 책의 갯수를 value로 두는 딕셔너리를 이용한다. 그 후 다시 for 루프를 돌리며 가장 큰 값을 가지는 key를 찾아 ans리스트에 추가한 후, 이걸 정렬하여 가장 첫번째 요소가 출력되도록 한다. 개선방안 처음 이 문..
https://www.acmicpc.net/problem/1673 1673번: 치킨 쿠폰 강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환 www.acmicpc.net 문제분석 입력으로 주어지는 것: 현재 갖고있는 치킨쿠폰 개수, 치킨쿠폰 하나로 교환할 수 있는 도장의 개수(k) 출력: 최대로 먹을 수 있는 치킨의 개수 문제풀이 재귀함수를 이용해서 문제를 해결 하였다. (현재 갖고있는 쿠폰 수, k, 현재 까지 먹은 치킨의 개수)를 입력받고 함수안에서는, 한 프로세스에서 새로 생기는 쿠폰을 포함한 현재 갖고있는 쿠폰 수를 계산하고, 지금 프로세스에서 먹은 치킨을..
https://www.acmicpc.net/problem/6502 문제 대전 ACM-ICPC Regional가 끝나면, 대회 참가자들은 다같이 카이스트 근처의 동혁 피자에 간다. 대회는 5시간동안 진행되므로, 참가자는 모두 배가 매우 고프다. 피자를 최대한 빨리 먹기 위해서, 큰 피자를 하나 시키려고 한다. 생각해보니 피자가 너무 크면 식탁 위에 맞지 않을 수도 있다. 식탁은 원이고, 피자는 직사각형이다. 식탁의 반지름과 피자의 크기가 주어졌을 때, 피자가 식탁에 맞는 크기인지 아닌지를 구하는 프로그램을 작성하시오. 문제 코드 문제 풀이 r에 0이 입력되기 전까지 무한반복 되는 while 문을 작성함. 그 후 w, l을 입력받음. 문제에서 말하는 테이블 안에 피자가 놓여지기 위해서는 피타고라스 정리에 의..
www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드 let input = require('fs').readFileSync('/dev/stdin').toString().toLowerCase(); const result = new Array(26).fill(0); for (let i = 0; i