전체 글 465

[ BOJ ] 9093 : 단어 뒤집기 ( BRONZE 1 ) / C, Python

문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다. 풀이 과정 문자열을 탐색하다가 스페이스바를 찾으면, 거기까지가 단어 하나인 것이다. 이전에 발견한 단어가 끝난 위치를 기억해둔 뒤, 스페이스바를 새로 발견한 위치부터 마지막 단어가 끝난 위치까지 출력하여 뒤집는다. 마지막 단어는 스페이스바가 ..

[ BOJ ] 4949 : 균형잡힌 세상 ( SILVER 4 ) / C, Python

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있..

[ BOJ ] 1316 : 그룹 단어 체커 ( SILVER 5 ) / C

문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 풀이 과정 알파벳 별로 등장 여부를 저장해놓고, 만약 이전에 등..

[ BOJ ] 25497 : 기술 연계마스터 임스 ( SILVER 5 ) / C, Python

문제 임스는 연계 기술을 사용하는 게임을 플레이 중에 있다. 연계 기술은 사전 기술과 본 기술의 두 개의 개별 기술을 순서대로 사용해야만 정상적으로 사용 가능한 기술을 말한다. 하나의 사전 기술은 하나의 본 기술과만 연계해서 사용할 수 있으며, 연계할 사전 기술 없이 본 기술을 사용했을 경우에는 게임의 스크립트가 꼬여서 이후 사용하는 기술들이 정상적으로 발동되지 않는다. 그렇지만 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없으며, 중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다. 임스가 사용할 수 있는 기술에는 1~9, L, R, S, K가 있다. 1~9는 연계 없이 사용할 수 있는 기술이고, L은 R의 사전 기술, S은 K의 사전 기술이다. 임스가 정해진 순서대로 N개의 기술..

[ 2023-2 Tutoring ] 9주차 문제 풀이 목록

가천대학교 2023-2 튜터링 프로그램 일반전공(프로그래밍4) 반에서 다룬 오늘의 문제 풀이입니다. 2023-11-21 9주차 튜터링 복습 문제 11월 28일 오전 10시 50분부터 열람 가능합니다. 1. [ BOJ ] 9012 : 괄호 ( SILVER 4 ) / C, Python https://readytojoin.tistory.com/37 2. [ BOJ ] 10845 : 큐 ( SILVER 4 ) / C, Python https://readytojoin.tistory.com/290 3. [ BOJ ] 11723 : 집합 ( SILVER 5 ) / C, Python https://readytojoin.tistory.com/291 4. [ BOJ ] 1065 : 한수 ( SILVER 4 ) / C, P..

[ BOJ ] 24578 : Ultimate Binary Watch ( BRONZE 2 ) / C, Python

문제 The Ultimate Binary Watch is a maker project that uses small LEDs to display time on a watch face. The display uses four columns of four LEDs each, with each column representing one digit of the current time in hours and minutes. Time is displayed in 24-hour format, with the 1st (left-most) column displaying the tens position for hours, the 2nd column displaying the ones position for hours, t..

[ BOJ ] 17608 : 막대기 ( BRONZE 2 ) / C, Python

문제 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다. N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다. 입력 첫 번째 줄에는 막대기의 개수를 나타내는 정수 N (2 ≤ N ≤ 100,000)이 주어지고 이어지는 N줄 각각에..

[ BOJ ] 12813 : 이진수 연산 ( BRONZE 2 ) / C, Python

문제 총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 이진수 A, 둘째 줄에 이진수 B가 주어진다. 두 이진수의 길이는 모두 100,000이다. 예제의 경우에만 길이가 10이며, 예제는 채점하지 않는다. 출력 첫째 줄부터 한 줄에 하나씩 차례대로 A & B, A | B, A ^ B, ~A, ~B를 출력한다. 풀이 과정 100,000 비트로 이루어진 이진수는 저장하기도 힘드므로, 문자열에 저장해서 하나하나씩 비트 연산하는 것처럼 출력한다. C #include #include char a[100005]; char b[100005]; int main(void) { scanf("%s..

[ BOJ ] 23968 : 알고리즘 수업 - 버블 정렬 1 ( BRONZE 1 ) / C, Python

문제 오늘도 서준이는 버블 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 버블 정렬로 배열 A를 오름차순 정렬할 경우 K 번째 교환되는 수를 구해서 우리 서준이를 도와주자. 크기가 N인 배열에 대한 버블 정렬 의사 코드는 다음과 같다. bubble_sort(A[1..N]) { # A[1..N]을 오름차순 정렬한다. for last = 2; last--) { for (int i = 1; i arr[i+1]) { int tmp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = tmp; count += 1; if (count ==..

[ BOJ ] 1373 : 2진수 8진수 ( BRONZE 1 ) / C, Python

문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다. 풀이 과정 2진수의 길이가 길기 때문에 10진수로 변환하기엔 무리가 있고, 8진수로 다이렉트로 변환해야 한다. 2진수를 오른쪽부터 3자리씩 끊어서 8진수로 바로 변환한다. C #include #include char n[1000005]; int result[1000005]; int result_size = 0; int max(int a, int b) { if (a > b) return a; return b; } int main(void) { scanf("%s", n); int n_size ..