programming
-
디지털 티비 in Python문제2012년 12월 31일 새벽 4시부터 지상파 아날로그 TV방송이 종료되었다. TV를 자주보는 할머니를 위해서, 상근이네 집도 디지털 수신기를 구입했다.원래 상근이네 집에는 KBS1과 KBS2만 나왔다. 할머니는 두 방송만 시청한다. 이제 디지털 수신기와 함께 엄청난 양의 채널을 볼 수 있게 되었다. 하지만, 할머니는 오직 KBS1과 KBS2만 보려고 한다. 따라서, 상근이는 채널 리스트를 조절해 KBS1을 첫 번째로, KBS2를 두 번째로 만들려고 한다.티비를 켜면 디지털 수신기는 시청 가능한 채널 리스트를 보여준다. 모든 채널의 이름은 서로 다르고, 항상 KBS1과 KBS2를 포함하고 있다. 상근이는 이 리모콘을 이용해서 리스트의 순서를 바꾸는 법을 알아냈다. 리스트의..
[BAEKJOON ONLINE JUDGE 2816번] 디지털 티비디지털 티비 in Python문제2012년 12월 31일 새벽 4시부터 지상파 아날로그 TV방송이 종료되었다. TV를 자주보는 할머니를 위해서, 상근이네 집도 디지털 수신기를 구입했다.원래 상근이네 집에는 KBS1과 KBS2만 나왔다. 할머니는 두 방송만 시청한다. 이제 디지털 수신기와 함께 엄청난 양의 채널을 볼 수 있게 되었다. 하지만, 할머니는 오직 KBS1과 KBS2만 보려고 한다. 따라서, 상근이는 채널 리스트를 조절해 KBS1을 첫 번째로, KBS2를 두 번째로 만들려고 한다.티비를 켜면 디지털 수신기는 시청 가능한 채널 리스트를 보여준다. 모든 채널의 이름은 서로 다르고, 항상 KBS1과 KBS2를 포함하고 있다. 상근이는 이 리모콘을 이용해서 리스트의 순서를 바꾸는 법을 알아냈다. 리스트의..
2025.02.24 -
단어 공부 in Python문제알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.입력 데이터첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.입력 예MississipizZazbaaa출력 데이터첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.출력 예?ZZA해결 방법등장하는 문자열에 대해 모두 대문자로 변환하여 dictionary를 이용해 count 해줌딕셔너리에 대해 문자의 발생 빈도를 기준으로 내림차순 정렬딕셔너리 첫 번째 문자와 두 번째 문자..
[BAEKJOON ONLINE JUDGE 1157번] 단어 공부단어 공부 in Python문제알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.입력 데이터첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.입력 예MississipizZazbaaa출력 데이터첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.출력 예?ZZA해결 방법등장하는 문자열에 대해 모두 대문자로 변환하여 dictionary를 이용해 count 해줌딕셔너리에 대해 문자의 발생 빈도를 기준으로 내림차순 정렬딕셔너리 첫 번째 문자와 두 번째 문자..
2025.02.24 -
비밀번호 발음하기 in Python문제좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtpzyo 같은 비밀번호를 무작위로 부여해 주기도 하지만, 사용자들은 이를 외우는데 어려움을 느끼고 심지어는 포스트잇에 적어 컴퓨터에 붙여놓는다. 가장 이상적인 해결법은 '발음이 가능한' 패스워드를 만드는 것으로 적당히 외우기 쉬우면서도 안전하게 계정을 지킬 수 있다.회사 FnordCom은 그런 패스워드 생성기를 만들려고 계획중이다. 당신은 그 회사 품질 관리 부서의 직원으로 생성기를 테스트해보고 생성되는 패스워드의 품질을 평가하여야 한다. 높은 품질을 가진 비밀번호의 조건은 다음과..
[BAEKJOON ONLINE JUDGE 4659번] 비밀번호 발음하기비밀번호 발음하기 in Python문제좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtpzyo 같은 비밀번호를 무작위로 부여해 주기도 하지만, 사용자들은 이를 외우는데 어려움을 느끼고 심지어는 포스트잇에 적어 컴퓨터에 붙여놓는다. 가장 이상적인 해결법은 '발음이 가능한' 패스워드를 만드는 것으로 적당히 외우기 쉬우면서도 안전하게 계정을 지킬 수 있다.회사 FnordCom은 그런 패스워드 생성기를 만들려고 계획중이다. 당신은 그 회사 품질 관리 부서의 직원으로 생성기를 테스트해보고 생성되는 패스워드의 품질을 평가하여야 한다. 높은 품질을 가진 비밀번호의 조건은 다음과..
2025.02.24 -
벌집 in Python문제위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.입력 데이터첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.입력 예13출력 데이터입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.출력 예3해결 방법1에서 시작하여 4시 방향으로 대각선의 수를 나열해보면 아래와 같음1, 7, 19,..
[BAEKJOON ONLINE JUDGE 2292번] 벌집벌집 in Python문제위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.입력 데이터첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.입력 예13출력 데이터입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.출력 예3해결 방법1에서 시작하여 4시 방향으로 대각선의 수를 나열해보면 아래와 같음1, 7, 19,..
2025.02.04 -
삼각형과 세 변 in Python문제삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.Equilateral : 세 변의 길이가 모두 같은 경우Isosceles : 두 변의 길이만 같은 경우Scalene : 세 변의 길이가 모두 다른 경우단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.입력 데이터각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.입력 예7 7 76 ..
[BAEKJOON ONLINE JUDGE 5073번] 삼각형과 세 변삼각형과 세 변 in Python문제삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.Equilateral : 세 변의 길이가 모두 같은 경우Isosceles : 두 변의 길이만 같은 경우Scalene : 세 변의 길이가 모두 다른 경우단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.입력 데이터각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.입력 예7 7 76 ..
2025.02.04 -
연결리스트 구현하기 in C++연결리스트란?연결리스트(Linked List)이란 여러 자료구조 중 하나로, 하나의 노드가 다음 노드를 계속 가리키는 구조이다.예를 들어보면 우리가 [2, 4, 3, 7, 8]을 순서대로 스택에 삽입하면, 2를 가진 노드는 다음 노드로 4를 가리키고, 4를 가진 노드는 다음 노드로 3을 가리키는 것이다.아주 쉽게 설명하면, 만화나 드라마의 '다음회에 계속...'이 그 예가 되겠다.우리가 예를 들어 드라마 1회를 본 다음, 드라마 끝에서 '다음회에 계속...'이라는 문구르 보면, 당연히 다음 회차인 2회를 나타낸다고 생각하기 때문이다.코드 소개C++언어를 이용하여 연결리스트를 구현해보는 프로그램이다.코드List.h/* * List.h * * Created on: 2017. ..
연결리스트 구현하기 in C++연결리스트 구현하기 in C++연결리스트란?연결리스트(Linked List)이란 여러 자료구조 중 하나로, 하나의 노드가 다음 노드를 계속 가리키는 구조이다.예를 들어보면 우리가 [2, 4, 3, 7, 8]을 순서대로 스택에 삽입하면, 2를 가진 노드는 다음 노드로 4를 가리키고, 4를 가진 노드는 다음 노드로 3을 가리키는 것이다.아주 쉽게 설명하면, 만화나 드라마의 '다음회에 계속...'이 그 예가 되겠다.우리가 예를 들어 드라마 1회를 본 다음, 드라마 끝에서 '다음회에 계속...'이라는 문구르 보면, 당연히 다음 회차인 2회를 나타낸다고 생각하기 때문이다.코드 소개C++언어를 이용하여 연결리스트를 구현해보는 프로그램이다.코드List.h/* * List.h * * Created on: 2017. ..
2024.09.20 -
스택 구현하기 in C++스택이란?스택(Stack)이란 여러 자료구조 중 하나로, 후입선출(LIFO; Last In, First Out)의 데이터 삽입 및 가져오기 방식을 지원하는 구조이다.예를 들어보면 우리가 [2, 4, 3, 7, 8]을 순서대로 스택에 삽입하지만, 데이터를 빼낼때는 [8, 7, 3, 4, 2]의 순서로 나오게 되는것이다.아주 쉽게 설명하면, 우리가 살면서 한 번쯤은 먹어봤을 유명한 스낵인 프링글스가 그 예가 되겠다.분명 생산공장에서는 통의 제일 아랫부분에 있는 조각을 가장 먼저 넣었겠지만, 우리는 뚜껑을 열어 가장 위에 있는 조각부터 먹지않는가.코드 소개C++언어를 이용하여 스택을 구현해보는 프로그램이다.코드stack.h/* * stack.h * * Created on: 2017. ..
스택 구현하기 in C++스택 구현하기 in C++스택이란?스택(Stack)이란 여러 자료구조 중 하나로, 후입선출(LIFO; Last In, First Out)의 데이터 삽입 및 가져오기 방식을 지원하는 구조이다.예를 들어보면 우리가 [2, 4, 3, 7, 8]을 순서대로 스택에 삽입하지만, 데이터를 빼낼때는 [8, 7, 3, 4, 2]의 순서로 나오게 되는것이다.아주 쉽게 설명하면, 우리가 살면서 한 번쯤은 먹어봤을 유명한 스낵인 프링글스가 그 예가 되겠다.분명 생산공장에서는 통의 제일 아랫부분에 있는 조각을 가장 먼저 넣었겠지만, 우리는 뚜껑을 열어 가장 위에 있는 조각부터 먹지않는가.코드 소개C++언어를 이용하여 스택을 구현해보는 프로그램이다.코드stack.h/* * stack.h * * Created on: 2017. ..
2024.09.20 -
Swing과 JavaFX를 이용하여 하나의 버튼이 있는 GUI창 만들어보기코드 소개Swing과 JavaFX를 이용하여 GUI 화면에 버튼 하나를 만들고, 버튼의 역할(버튼의 내용을 변경)을 구현한 프로그램이다.코드Swing 이용import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JButton;public class OneButtonSwing extends JFrame { private JPanel pa..
One Button in Java GUISwing과 JavaFX를 이용하여 하나의 버튼이 있는 GUI창 만들어보기코드 소개Swing과 JavaFX를 이용하여 GUI 화면에 버튼 하나를 만들고, 버튼의 역할(버튼의 내용을 변경)을 구현한 프로그램이다.코드Swing 이용import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JButton;public class OneButtonSwing extends JFrame { private JPanel pa..
2024.09.20 -
Swing을 이용하여 이미지의 일부분을 모자이크 처리하는 프로그램 만들어보기코드 소개Swing을 이용하여 GUI 화면에 버튼 배열을 만들고, 그 버튼을 이미지로 채운 뒤, 버튼의 역할(버튼 속 이미지를 모자이크 처리)을 구현한 프로그램이다.코드MosaicButtonMain.java/** * Created on Jan 7, 2018 * @author minsu -- hufs.ac.kr, Dept of CES * Copy Right -- Free for Educational Purpose */package mosaicButton;import java.awt.EventQueue;import javax.swing.UIManager;public class MosaicButtonMain { /** * ..
Mosaic Image Button in Java GUISwing을 이용하여 이미지의 일부분을 모자이크 처리하는 프로그램 만들어보기코드 소개Swing을 이용하여 GUI 화면에 버튼 배열을 만들고, 그 버튼을 이미지로 채운 뒤, 버튼의 역할(버튼 속 이미지를 모자이크 처리)을 구현한 프로그램이다.코드MosaicButtonMain.java/** * Created on Jan 7, 2018 * @author minsu -- hufs.ac.kr, Dept of CES * Copy Right -- Free for Educational Purpose */package mosaicButton;import java.awt.EventQueue;import javax.swing.UIManager;public class MosaicButtonMain { /** * ..
2024.09.20 -
Swing을 이용하여 랜덤한 포커패 100세트를 생성하는 프로그램 만들어보기코드 소개Swing을 이용하여 GUI 화면에 버튼 배열을 만들고, 그 버튼을 이미지로 채운 뒤, 버튼의 역할(클릭할 때 패를 뒤집는 기능)을 구현한 프로그램이다.각 세트별로 카드르 모두 뒤집으면 스코어보드에 패의 결과(족보)가 기록된다.프로그램 미리보기코드GUIPokerGrameMain.java/** * Created on Dec 18, 2017 * @author msJo -- hufs.ac.kr, Dept of CES * Copy Right -- Free for Educational Purpose */package guiPokerGame;import java.awt.EventQueue;import javax.swing.UIMan..
Making poker hands 100-set in Java GUISwing을 이용하여 랜덤한 포커패 100세트를 생성하는 프로그램 만들어보기코드 소개Swing을 이용하여 GUI 화면에 버튼 배열을 만들고, 그 버튼을 이미지로 채운 뒤, 버튼의 역할(클릭할 때 패를 뒤집는 기능)을 구현한 프로그램이다.각 세트별로 카드르 모두 뒤집으면 스코어보드에 패의 결과(족보)가 기록된다.프로그램 미리보기코드GUIPokerGrameMain.java/** * Created on Dec 18, 2017 * @author msJo -- hufs.ac.kr, Dept of CES * Copy Right -- Free for Educational Purpose */package guiPokerGame;import java.awt.EventQueue;import javax.swing.UIMan..
2024.09.20 -
State-Pattern을 이용하여 한글 오토마타 프로그램 만들어보기오토마타란?주어진 입력(문자 또는 기호로, 정해진 집합의 원소)에 의존해 작동하며, 유한한 상태의 집합을 갖고 있으고, 입력에 따라 현재 상태에서 정해진 다음 상태로 전이하는 수학적 기계이다.위 그림은 오토마타의 간단한 예시이다.상태 : S1, S2입력값 : 0, 1전이 :S1에서 0을 넣으면 S2로 전이S1에서 1을 넣으면 S1로 전이S2에서 0을 넣으면 S1로 전이S2에서 1을 넣으면 S2로 전이한글 오토마타란?기본 개념키보드로 한글입력(자음, 모음)이 주어지면 주어지 자음고 모음을 훈민정음에 맞도록 결합하는 것이다. 영어와 같은 나열해서 쓰는 언어에는 없지만, 조합해서 쓰는 우리말의 경우 조합해야 한 글자로써으 의미를 가지기 때문에..
Korean Automata in JavaState-Pattern을 이용하여 한글 오토마타 프로그램 만들어보기오토마타란?주어진 입력(문자 또는 기호로, 정해진 집합의 원소)에 의존해 작동하며, 유한한 상태의 집합을 갖고 있으고, 입력에 따라 현재 상태에서 정해진 다음 상태로 전이하는 수학적 기계이다.위 그림은 오토마타의 간단한 예시이다.상태 : S1, S2입력값 : 0, 1전이 :S1에서 0을 넣으면 S2로 전이S1에서 1을 넣으면 S1로 전이S2에서 0을 넣으면 S1로 전이S2에서 1을 넣으면 S2로 전이한글 오토마타란?기본 개념키보드로 한글입력(자음, 모음)이 주어지면 주어지 자음고 모음을 훈민정음에 맞도록 결합하는 것이다. 영어와 같은 나열해서 쓰는 언어에는 없지만, 조합해서 쓰는 우리말의 경우 조합해야 한 글자로써으 의미를 가지기 때문에..
2024.09.20 -
Calculate GCD in 3 ways in C++코드 소개C++언어를 이용하여 두 자연수 a, b의 최대공약수(GCD)를 3가지 방법으로 구하고, 그 시간을 측정하는 프로그램이다.gcd_sub(a, b) 큰 수에서 작은 수를 반복적으로 빼가면서 GCD 계산gcd_mod(a, b) 큰 수를 작은 수로 나눈 나머지를 이용하여 GCD 계산gcd_rec(a, b) gcd_sub(a, b)를 재귀함수로 만든것을 이용하여 GCD 계산각 방법에 소요되는 시간을 측정하기 위해 각 방법에 대한 계산을 10,000,000번 하도록 한다.최대공약수(GCD; Greatest Common Divisor)어떠한 자연수들을 공통적으로 나눌 수 있는 수 중, 가장 큰 수이다.예를 들어 18, 24, 36의 최대공약수는 6이다...
Calculate GCD in 3 waysCalculate GCD in 3 ways in C++코드 소개C++언어를 이용하여 두 자연수 a, b의 최대공약수(GCD)를 3가지 방법으로 구하고, 그 시간을 측정하는 프로그램이다.gcd_sub(a, b) 큰 수에서 작은 수를 반복적으로 빼가면서 GCD 계산gcd_mod(a, b) 큰 수를 작은 수로 나눈 나머지를 이용하여 GCD 계산gcd_rec(a, b) gcd_sub(a, b)를 재귀함수로 만든것을 이용하여 GCD 계산각 방법에 소요되는 시간을 측정하기 위해 각 방법에 대한 계산을 10,000,000번 하도록 한다.최대공약수(GCD; Greatest Common Divisor)어떠한 자연수들을 공통적으로 나눌 수 있는 수 중, 가장 큰 수이다.예를 들어 18, 24, 36의 최대공약수는 6이다...
2024.09.20