programming
-
연결리스트 구현하기 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 -
Towers of Hanoi in C코드 소개C언어를 이용하여 n개의 원반이 있는 하노이의 탑 문제에서 원반의 이동횟수를 구하는 프로그램이다.하노이의 탑1883년 프랑스 수학자 루카스(Lucas)에 의해 고안된 문제인데, 가운데 기둥을 이용해서 왼쪽 기둥에 놓인 크기가 다른 n개의 원판을 오른쪽 기둥으로 옮기는 문제였다. 이때 원판은 한번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다는 조건이 따른다.하노이의 탑에서 원판 옮기는 과정코드//============================================================================// Name : Towers_of_Hanoi.c// Author : Minsu Jo/..
Towers of HanoiTowers of Hanoi in C코드 소개C언어를 이용하여 n개의 원반이 있는 하노이의 탑 문제에서 원반의 이동횟수를 구하는 프로그램이다.하노이의 탑1883년 프랑스 수학자 루카스(Lucas)에 의해 고안된 문제인데, 가운데 기둥을 이용해서 왼쪽 기둥에 놓인 크기가 다른 n개의 원판을 오른쪽 기둥으로 옮기는 문제였다. 이때 원판은 한번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다는 조건이 따른다.하노이의 탑에서 원판 옮기는 과정코드//============================================================================// Name : Towers_of_Hanoi.c// Author : Minsu Jo/..
2024.09.20 -
1로 만들기 in C++문제어떠한 정수 X에 아래 3개의 연산을 통해 1을 가장 빠르게(연산의 횟수를 최소화 하여) 만드려고 한다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.X를 1로 만들기 위해 연산이 가장 적게 사용된 횟수를 출력하도록 한다.예시N=1 일 때, 연산의 횟수는 0, N=2 일 때, 연산의 횟수는 2->1 이므로 1. N=3 일 때, 연산의 횟수는 3->1 이므로 1.N=4 일 때, 연산의 횟수는 4->3->1 or 4->2->1 두 가지 경우 모두 2.… N=10 일 때, 10->5->4->2->1의 경우에는 4이지만, 10->9->3->1의 경우에 3이므로 이 때는 3.입력 데이터1보다 크거나 같고 106보다 작은 정수 N입력 예1..
[BAEKJOON ONLINE JUDGE 1463번] 1로 만들기1로 만들기 in C++문제어떠한 정수 X에 아래 3개의 연산을 통해 1을 가장 빠르게(연산의 횟수를 최소화 하여) 만드려고 한다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.X를 1로 만들기 위해 연산이 가장 적게 사용된 횟수를 출력하도록 한다.예시N=1 일 때, 연산의 횟수는 0, N=2 일 때, 연산의 횟수는 2->1 이므로 1. N=3 일 때, 연산의 횟수는 3->1 이므로 1.N=4 일 때, 연산의 횟수는 4->3->1 or 4->2->1 두 가지 경우 모두 2.… N=10 일 때, 10->5->4->2->1의 경우에는 4이지만, 10->9->3->1의 경우에 3이므로 이 때는 3.입력 데이터1보다 크거나 같고 106보다 작은 정수 N입력 예1..
2024.09.20 -
회의실배정 in C++문제여러 개의 회의가 하나의 회의실을 이용하고 싶어 한다. 이러한 상황에서, 회의실을 가장 효율적으로 이용하기 위해 회의실 사용표를 만들려고 한다.각 회의의 시작 시간, 끝나는 시간이 주어질 때, 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 구하시오.입력 데이터각 회의는 시작 시간(0이상 231-1이하인 정수)과 끝나는 시간(0이상 231-1이하인 정수)을 가질 때, N개의 회의에 대해 N(1 ≤ N ≤ 106), 각 회의의 시작 시간, 끝나는 시간입력 예2039 4524 2525 2734 3735 5036 406 4030 3734 3824 3915 3244 4549 501 2940 4122 231 2220 4140 4724 39출력 데이터각 회의가 겹치지 않게 ..
[BAEKJOON ONLINE JUDGE 1931번] 회의실배정회의실배정 in C++문제여러 개의 회의가 하나의 회의실을 이용하고 싶어 한다. 이러한 상황에서, 회의실을 가장 효율적으로 이용하기 위해 회의실 사용표를 만들려고 한다.각 회의의 시작 시간, 끝나는 시간이 주어질 때, 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 구하시오.입력 데이터각 회의는 시작 시간(0이상 231-1이하인 정수)과 끝나는 시간(0이상 231-1이하인 정수)을 가질 때, N개의 회의에 대해 N(1 ≤ N ≤ 106), 각 회의의 시작 시간, 끝나는 시간입력 예2039 4524 2525 2734 3735 5036 406 4030 3734 3824 3915 3244 4549 501 2940 4122 231 2220 4140 4724 39출력 데이터각 회의가 겹치지 않게 ..
2024.09.20 -
단어의 개수 in C++문제영어 대소문자와 공백으로만 구성된 하나의 문장이 주어질 때, 이 문장의 단어의 개수를 출력한다.입력 데이터영어 대소문자와 공백으로만 구성된 하나의 문장입력 예Minsu's algorithm study, using c++ or java출력 데이터문장의 단어의 개수출력 예7조건단, 문장의 길이는 1,000,000자를 넘지 않고, 단어는 공백으로만 구분되며, 공백은 연속되지 않음해결 방법문제의 조건으로 볼 때, 단어의 개수는 공백의 수와 밀접한 관련이 있다는 것을 알 수 있다.예를 들어 ‘A b’ 라면 공백은 1개이고, 단어는 2개이다.‘ A b’라면 공백은 2개이지만, 단어는 이전과 마찬가지로 2개이다.‘ A b ‘라면 공백은 3개이지만, 단어는 역시 2개이다.이 예시들을 통해 볼..
[BAEKJOON ONLINE JUDGE 1152번] 단어의 개수단어의 개수 in C++문제영어 대소문자와 공백으로만 구성된 하나의 문장이 주어질 때, 이 문장의 단어의 개수를 출력한다.입력 데이터영어 대소문자와 공백으로만 구성된 하나의 문장입력 예Minsu's algorithm study, using c++ or java출력 데이터문장의 단어의 개수출력 예7조건단, 문장의 길이는 1,000,000자를 넘지 않고, 단어는 공백으로만 구분되며, 공백은 연속되지 않음해결 방법문제의 조건으로 볼 때, 단어의 개수는 공백의 수와 밀접한 관련이 있다는 것을 알 수 있다.예를 들어 ‘A b’ 라면 공백은 1개이고, 단어는 2개이다.‘ A b’라면 공백은 2개이지만, 단어는 이전과 마찬가지로 2개이다.‘ A b ‘라면 공백은 3개이지만, 단어는 역시 2개이다.이 예시들을 통해 볼..
2024.09.20 -
N-Queen문제N x N (칸) 크기의 체스판 위에 오직 N개의 Queen만을 서로를 공격할 수 없게 놓았을 때, 앞의 설명과 같이 Queen말을 놓는 모든 방법의 수를 구하여 출력한다.입력 데이터체스판 한 변의 길이(혹은 Queen 말의 수) N입력 예4출력 데이터N x N (칸) 크기의 체스판 위에 Queen말을 놓는 모든 방법의 수출력 예2조건N은 1이사 15이하의 정수Queen말은 자신과 같은 직선, 대각선에 위치한 말을 공격할 수 있음해결 방법예를 들어 1 x 1 크기의 체스판에는 체스판의 크기도 1 x 1(1칸) 이지만, 놓을 Queen의 수도 1개 이므로 방법의 수는 (1, 1)에 놓는 1가지 이다.그러나 2 x 2 일 때와, 3 x 3 일 때는 Queen을 놓을 수 있는 방법이 존재하지 ..
[BAEKJOON ONLINE JUDGE 9663번] N-QueenN-Queen문제N x N (칸) 크기의 체스판 위에 오직 N개의 Queen만을 서로를 공격할 수 없게 놓았을 때, 앞의 설명과 같이 Queen말을 놓는 모든 방법의 수를 구하여 출력한다.입력 데이터체스판 한 변의 길이(혹은 Queen 말의 수) N입력 예4출력 데이터N x N (칸) 크기의 체스판 위에 Queen말을 놓는 모든 방법의 수출력 예2조건N은 1이사 15이하의 정수Queen말은 자신과 같은 직선, 대각선에 위치한 말을 공격할 수 있음해결 방법예를 들어 1 x 1 크기의 체스판에는 체스판의 크기도 1 x 1(1칸) 이지만, 놓을 Queen의 수도 1개 이므로 방법의 수는 (1, 1)에 놓는 1가지 이다.그러나 2 x 2 일 때와, 3 x 3 일 때는 Queen을 놓을 수 있는 방법이 존재하지 ..
2024.09.20 -
Farm in C++문제양이 x마리, 염소가 y마리 있고, 양은 하루에 a만큼의 사료를, 염소는 하루에 b만큼의 사료를 먹을 때, 모든 양과 염소가 하루에 먹은 사료의 양 w와 전체 양과 염소의 수 n을 통해 양과 염소의 수를 구하는 문제이다.유일 해가 존재할 때는 그 해를 출력하며, 해가 2개 이상이거나 해가 없으면 -1을 출력해야한다.입력 데이터네 정수 a, b, n, w입력 예3 4 9 32출력 데이터문장의 단어의 개수출력 예4 5조건1 ≤ a ≤ 1,000, 1 ≤ b ≤ 1,000, 2 ≤ n ≤ 1,000, 2 ≤ w ≤ 1,000,000해결 방법일반적인 연립방정식 문제인 x+y=n, ax+by=w와 같다.따라서 컴퓨터의 계산 능력을 믿고 연립 방정식을 푸는 것을 이용하면 된다.코드#inclu..
[BAEKJOON ONLINE JUDGE 16283번] FarmFarm in C++문제양이 x마리, 염소가 y마리 있고, 양은 하루에 a만큼의 사료를, 염소는 하루에 b만큼의 사료를 먹을 때, 모든 양과 염소가 하루에 먹은 사료의 양 w와 전체 양과 염소의 수 n을 통해 양과 염소의 수를 구하는 문제이다.유일 해가 존재할 때는 그 해를 출력하며, 해가 2개 이상이거나 해가 없으면 -1을 출력해야한다.입력 데이터네 정수 a, b, n, w입력 예3 4 9 32출력 데이터문장의 단어의 개수출력 예4 5조건1 ≤ a ≤ 1,000, 1 ≤ b ≤ 1,000, 2 ≤ n ≤ 1,000, 2 ≤ w ≤ 1,000,000해결 방법일반적인 연립방정식 문제인 x+y=n, ax+by=w와 같다.따라서 컴퓨터의 계산 능력을 믿고 연립 방정식을 푸는 것을 이용하면 된다.코드#inclu..
2024.09.20