전체 글 465

[ BOJ ] 1032 : 명령 프롬프트 ( BRONZE 1 ) / C, Python

문제 시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다. dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다. 이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 ..

[ BOJ ] 26594 : ZOAC 5 ( BRONZE 3 ) / C, Python

문제 2022년 12월, 다섯 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 매번 새로운 방식으로 문자열을 보여주던 성우는 이번 대회에서는 평범하게 앞 글자부터 하나씩 보여주기로 했다. 성우는 문자를 입력하기 위해 키보드로 손을 뻗은 순간, 실수로 마시던 소주를 키보드에 쏟아버리고 말았다... 알코올에 취한 키보드는 어떤 자판을 한 번만 눌러도 N번 누른 것처럼 인식을 하게 되어버렸다! 소중한 키보드를 고치기 위해 고장 접수를 하는 성우는 N을 정확하게 알아야 한다. 눈물이 앞을 가려 모니터를 제대로 볼 수 없는 성우를 위해 대신 N을 구해주도록 하자! 입력 첫째 줄에 성우가 고장 난 키보드로 입력한 문자열이 주어진다. 문자열의 길이는 1,000,000보다 크지..

[ BOJ ] 23891 : 타이어 끌기 ( GOLD 2 ) / Python

문제 타이어 끌기는 경기북과학고등학교의 운동회를 대표하는 인기 종목이다. 타이어 끌기의 규칙은 다음과 같다. N개의 타이어가 있으며, i번째 타이어는 S_i의 점수를 가진다. 양 팀에서는 각 타이어마다 해당 타이어를 끌어올 사람의 수를 배정한다. 각 타이어에 대해 더 많은 사람을 보낸 팀이 S_i만큼의 점수를 얻으며, 배정된 사람이 같은 경우 양 팀 모두 해당 타이어에 대한 점수를 얻지 못한다. 더 많은 점수를 얻은 팀이 승리한다. 1학년 1반의 브레인인 당신은 스파이를 통해 상대 팀인 1학년 2반이 타이어 별로 배정한 인원을 알게 되었다. 타이어의 개수 N, 1학년 1반의 학생 수 M, 각 타이어가 가지는 점수와 1학년 2반이 배정한 인원이 주어질 때, 1학년 1반을 승리로 이끌 수 있을지 판단해보자...

[ BOJ ] 20053 : 최소, 최대 2 ( BRONZE 3 ) / C, Python

문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다. 각 테스트 케이스의 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 각 테스트 케이스마다 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 한 줄에 하나씩 차례대로 출력한다. 풀이 과정 최소, 최대 문제 https://readytojoin.tistory.com/154 에서 테스트 케이스가 추가된 문제이다. 반복문을 이..

[ BOJ ] 2576 : 홀수 ( BRONZE 3 ) / C, Python

문제 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53, 85이므로 그 합은 77 + 41 + 53 + 85 = 256 이 되고, 41 < 53 < 77 < 85 이므로 홀수들 중 최솟값은 41이 된다. 입력 입력의 첫째 줄부터 일곱 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100보다 작다. 출력 홀수가 존재하지 않는 경우에는 첫째 줄에 -1을 출력한다. 홀수가 존재하는 경우 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력한다. 풀이 과정 자연수를 7..

[ BOJ ] 26004 : HI-ARC ( BRONZE 3 ) / C, Python

문제 당신은 𝐇𝐈-𝐀𝐑𝐂의 열렬한 팬이다. 따라서 위의 이모지를 만들고 싶어 한다. 현재 N 길이의 문자열 S를 가지고 있다. 이모지를 하나 만들기 위해선 𝐇 𝐈 𝐀 𝐑 𝐂 각 문자가 하나씩 필요하다. 이모지를 최대 몇 개 만들 수 있는지 구해보자. 입력 첫째 줄에 문자열 S의 길이 정수 N이 주어진다. (1 ≤ N ≤ 100 000) 둘째 줄에 문자열 S가 주어진다. 문자열 S의 모든 문자는 영어 대문자이다. 출력 첫째 줄에 주어진 문자열 S로 만들 수 있는 이모지의 최대 개수를 출력한다. 풀이 과정 H, I, A, R, C 하나씩 사용하여 HI-ARC 이모지를 만들 수 있으므로, 다른 글자가 아무리 많다 한들 각 글자 중에서 최소 개수를 가진 특정 글자의 개수 만큼만 HI-ARC 이모지를 만들 수 있..

[ BOJ ] 4504 : 배수 찾기 ( BRONZE 3 ) / C, Python

문제 정수 n(0 < n < 1000)과 수의 목록이 주어졌을 때, 목록에 들어있는 수가 n의 배수인지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. 다음 줄부터 한 줄에 한 개씩 목록에 들어있는 수가 주어진다. 이 수는 0보다 크고, 10,000보다 작다. 목록은 0으로 끝난다. 출력 목록에 있는 수가 n의 배수인지 아닌지를 구한 뒤 예제 출력처럼 출력한다. 풀이 과정 먼저 n 을 입력 받고, 0이 입력될 때 까지 목록을 계속 입력받으면서 n의 배수인지 아닌지를 출력한다. n의 배수인지 아닌지를 확인하기 위해선 n으로 나누었을 때 나누어 떨어진다면 n의 배수임을 확인할 수 있다. C #include int main(void) { int n; scanf("%d", &n); int..

[ BOJ ] 21964 : 선린인터넷고등학교 교가 ( BRONZE 3 ) / C, Python

문제 드높은 남산 위에 우뚝 선 송백은 흰 눈빛에 푸르고 옛부터 흘러가는 한가람 장 할 손 우리 학원 이룩한 굳세고 다함 없는 거룩한 뜻이 백이십년 빛난 역사 자랑이로세 비바람 몰아쳐도 나가자 공들여 쌓은 탑은 빛난다 울려라 삼천리에 힘차게 세워라 반석 위에 선린의터를 선린인터넷고등학교 학생들은 이미 잘 알고 있겠지만, 학교 교가를 부를 때는 마지막 5글자인 "선린의터를" 부분만 크고 우렁차게 불러야 한다. 정휘는 여기에 영감을 받아, 문자열이 주어지면 마지막 5글자만 우렁차게 읽으려고 한다. 공백이 없는 문자열이 주어지면 마지막 5글자만 출력하는 프로그램을 작성해보자. 입력 첫 번째 줄에 문자열의 길이 N이 주어진다. 두 번째 줄에는 N글자로 이루어진 문자열 S가 주어진다. 출력 S의 마지막 5글자를 ..

[ BOJ ] 2662 : 기업투자 ( GOLD 2 ) / Python

문제 어떤 투자가가 여러 기업들에게 돈을 투자해서 최대의 이익을 얻고자 한다. 단, 투자는 만원 단위로 할 수 있으며 각 기업은 많이 투자할수록 많은 이익을 투자가에게 돌려준다. 돈을 투자하지 않은 경우는 당연히 얻게 되는 이익도 없다. 예를 들어서, 한 투자가가 4만원을 갖고 두 개의 기업들에 각각 만원 단위로 투자했을 경우 얻을 수 있는 이익은 다음과 같다. 투자 액수 (만원) 기업 A 기업 B 1 5 1 2 6 5 3 7 9 4 8 15 위의 경우 만일, 기업 A에 1만원, 기업 B에 3만원을 투자하는 경우 투자가가 얻는 이익은 14만원(5만원+9만원)이다. 4만원을 투자해서 가장 많은 이익을 얻을 경우 기업 B에만 4만원을 투자하는 경우로서 이때의 이익은 15만원이다. 여기서 투자가는 한 기업에 ..

[ BOJ ] 5582 : 공통 부분 문자열 ( GOLD 5 ) / Python

문제 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들어, 문자열 ABRACADABRA의 부분 문자열은 ABRA, RAC, D, ACADABRA, ABRACADABRA, 빈 문자열 등이다. 하지만, ABRC, RAA, BA, K는 부분 문자열이 아니다. 두 문자열 ABRACADABRA와 ECADADABRBCRDARA의 공통 부분 문자열은 CA, CADA, ADABR, 빈 문자열 등이 있다. 이 중에서 가장 긴 공통 부분 문자열은 ADABR이며, 길이는 5이다. 또, 두 문자열이 UPWJCIRUCAXIIRGL와 SBQNYBSBZDFNEV인 경우에는 가장 긴 공..