https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 풀이 단어중에서 알파벳이 처음 나오거나 연속으로 나오는 경우를 제외하고 한번이라도 더 등장하면 그룹단어가 아니다. 여기서 힌트를 얻었고, 이를 코드로 구현해봤다. n = int(input()) result = n for _ in range(n): word = input() arr = [] arr.append(word[0]) for i in range(len(w..

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 풀이 생각한 문제풀이 방식은 알파벳은 총 26개이기 때문에 배열을 26개로 초기화 해준뒤 아스키 코드를 이용하여 각 인덱스에 사용된 알파벳의 수를 저장하는 것이다. 아래는 이를 코드로 옮겨놓은 것이다. s = input().lower() arr = [0]*26 for i in range(len(s)): arr[ord(s[i])-97] += 1 max_cnt = 0 result = '' for i in range(len(arr..
https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 처음에 예제가 3줄만 입력되어 있어서 3줄만 입력하라는건가 싶어 혹시나 하고 3줄만 입력받고 출력했다가 틀렸다. 그래서 입력값이 무제한이 맞겠구나 싶어 구현하려 했지만 종료조건을 어떻게 해야 할지 몰라 다른 사람들의 풀이를 찾아봤다. while True: try: print(input()) except EOFError: break input()함수 같은 경우에는 입력값이 주어지지..

https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 문제 풀이 자격증 공부하느라 오랜만에 문제를 풀어봤더니 감을 다 잃은거 같았다. 고민 좀 하다가 감 다시 되찾는다고 생각하고 다른 사람들의 풀이를 찾아봤다. 이 문제 풀이의 핵심은 첫번째 열에서 마지막 열에 도달할때 오른쪽, 오른쪽 위, 오른쪽 아래 이렇게 총 3가지의 이동 방향만 있다는 것이다. 알고리즘의 순서는 다음과 같다. 1. 방향을 따라 이동하는 문제이기에 BFS, DFS를 떠올려야 한다. 2. 이동 방..
https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 문제 풀이 문제를 읽자마자 한번에 이해도 못했고, 어떻게 풀어야 할지 감도 안 잡혀 다른 사람들의 풀이를 찾아봤다. 문제에 대한 이해는 이 블로그를 참고했다. 이 문제를 풀면서 생각해야 할 점은 다음과 같다. 1. 뒤집을 수 있는 크기는 3x3이다. 2. 1번 조건 때문에 끝에 있는 두 블럭은 뒤집기가 불가능하다. 위 경우를 코드로 어떻게 구현했는지는 주석으로 설명해 보겠다. 코드 import sys input..
https://www.acmicpc.net/problem/1213
https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제 풀이 이 문제는 규칙을 찾는 게 중요한 문제이다. 처음에는 입력된 값을 내림차순으로 정렬한 후 수를 묶어주면 최댓값을 구할 수 있겠다고 생각했다. 하지만 음수가 짝수개일 경우에는 해당되지 않았기에 양수와 음수를 분리해 계산하기로 했다. 하지만 이 경우도 예외가 있었는데, 0과 음수가 포함된 경우에는 최댓값을 구하지 못한다는 점이었다. 다음은 이에 대한 코드이다. 코드 import sys i..
https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 문제 풀이 상당히 어려운 문제였던거 같다. 처음에 풀이를 좀 하다가 모르겠어서 다른 사람의 블로그를 찾아봤다. 문제 풀의 핵심은 다음과 같다. 1. 빨간 공과 파란 공의 위치 변수를 각각 선언 2. 빨간 공이 먼저 탈출하게 된다면 print(1) 출력 3. 파란 공이 먼저 탈출하면 안 됨 4. 기존 BFS에서는 방향 리스트가 한번 움직일 때 큐에 추가..