본문 바로가기
728x90

Programming Languages176

[Python Examples] BeautifulSoup #01: 웹페이지 텍스트 크롤링 포스트 난이도: HOO_Junior# BeautifulSoupBeautifulSoup 패키지는 웹의 데이터를 가져오거나 크롤링, 즉 추출할 때 사용하는 패키지이다. 특히 HTML이나 XML에 특화되어 있다 보니 웹페이지와 관련해서 데이터를 가져오겠다고 한다면 자연스럽게 생각나는 간단한 방법 중 하나가 바로 BeautifulSoup이다. 정말 많이 사용하다보니 브로들도 파이썬을 배우기 시작한다면 대표적인 예제로 배울 확률이 높은 패키지 중 하나이다. MIT 라이선스이기 때문에 편하게 사용하면 된다.# Crawling, 추출이번 파이썬 예제코드에서는 가장 기본적인 웹페이지에서 텍스트를 크롤링하는 방법에 대해서 살펴보도록 하자. 이후에 class ID를 설정해줌으로써 html에 안에 있는 특정한 데이터나 키.. 2024. 12. 16.
[Python] Dask: Parallel Computing 포스트 난이도: HOO_Middle# 당신의 파이썬은 더 이상 답답하지 않다.데이터를 다루는 프로그래밍을 할 때 우리는 파이썬 기반의 작업을 정말 많이 하는 편이다. 파이썬과 연관되어 있는 다양한 데이터 분석 관련 라이브러리가 있다는 점도 있지만 내 개인적인 생각에는 속도가 다소 느리더라도 복잡한 데이터 분석에 대한 구조를 이해하고 작업하는 데 있어서 파이썬 언어가 편하기 때문이다. 따라서 시뮬레이션이나 파일럿 모델을 구축하는 데 있어서 파이썬 기반으로 모델링을 많이 하는 편인데 문제는 해당 모델링의 구조나 사이즈가 점차적으로 커지고 복잡해진다면 아무리 시뮬레이션이라고 할지라도 답답해지고 제 역할을 못하게 된다. 이때 프로세스 (Process)라고 부르는 작업 스케줄링을 병렬 연산을 통해서 더 빠르게 처.. 2024. 7. 22.
[Java Examples] 입력한 Integer에 따라서 정사각형 출력하기 예제코드 입력한 Integer에 따라서 정사각형 출력하기 예제코드 포스트 난이도: HOO_Junior # Example code import java.util.Scanner; /** * This class demonstrates a program that generates a square display of 'X' characters. * The size of the square (length of each side) is determined by user input, * constrained to a positive integer no greater than 15. */ public class SquareDisplay { /** * Main method that runs the program. It asks t.. 2024. 3. 31.
[C++] Lexical Analyzer를 배우는 이유 Lexical Analyzer를 배우는 이유 포스트 난이도: HOO_Junior # Lexical Analyzer란? Lexcial analyzer 또는 한국말로 어휘 분석기는 Computer science (CS)를 전공하는 학생이거나 프로그래밍을 배운다면 오토마타 및 기본 컴퓨터 구조와 함께 배우는 첫 번째 단계의 Scanner(스캐너)이다. 첫 번째 단계의 스캐너라고 부르는 이유는 기계어에 해당하는 바이너리 컴파일까지 가기 위해서 여러 단계를 거치는데 그중에 대표적인 스캐너 방법 중 하나가 바로 Lexcial analyzer이기 때문이다. 한마디로 C++를 포함하여 여러 종류의 프로그래밍 언어들을 그대로 컴퓨터한테 전달할 수 없기 때문에 컴파일 또는 인터프리터로 변환하는 과정 중 첫 번째에 해당하는.. 2024. 3. 15.
[Java Examples] Rectangle.java를 활용해서 집 크기 구하기 예제코드 및 설명 Rectangle.java를 활용해서 집 크기 구하기 예제코드 및 설명 포스트 난이도: HOO_Junior # Example Code public class Immutable_Rectangle { //Fields of the class rectangle final private double length; final private double width; //Getter methods(Accessor methods) public double getLength() { return length; } public double getWidth() { return width; } public double getArea() { return width * length; } //Constructor public Immu.. 2024. 3. 4.
[Java Examples] Array Lists, 어레이 리스트 예제코드 및 설명 Array Lists, 어레이 리스트 예제코드 및 설명 포스트 난이도: HOO_Junior # Example Code import java.util.ArrayList; public class ArrayList_Practice { public static void main(String[] args) { ArrayList nameList = new ArrayList(); nameList.add("Amy"); nameList.add("Ryan"); nameList.add("Jin"); System.out.println("The array has " + nameList.size() + " names."); for(String s : nameList) System.out.println(s); System.out... 2024. 2. 21.
[Java Examples] 다중 if문을 활용한 Troubleshooting 문제 해결 예제코드 및 설명 다중 if문을 활용한 Troubleshooting 문제 해결 예제코드 및 설명 포스트 난이도: HOO_Junior # Example Code import java.util.Scanner; /** * This class provides a step-by-step troubleshooting guide for fixing Wi-Fi connection issues. */ public class WifiTroubleshooter { // Scanner for user input private static final Scanner scanner = new Scanner(System.in); /** * The main method starts the troubleshooting process. * @param a.. 2024. 2. 14.
[Java Examples] 숫자를 로마 숫자로 바꾸기 예제 코드 및 설명 숫자를 로마 숫자로 바꾸기 예제 코드 및 설명 포스트 난이도: HOO_Junior # Example Code /** * This class converts a user-inputted number into its Roman numeral equivalent. * It prompts the user until a number within the range of 1 to 90 is entered. */ import java.util.Scanner; // Import statement for java.util.Scanner public class RomanNumeralConverter { // Variable to store the user's input private int number; /** * Main.. 2024. 2. 14.
[Java Examples] 자바 어레이를 사용해서 오름차순으로 출력하기 자바 어레이를 사용해서 오름차순으로 출력하기 포스트 난이도: HOO_Junior # Example Code import java.util.Arrays; import java.util.Scanner; /** * This class prompts the user to enter three names and then displays them sorted in ascending order. */ public class NameSorter { /** * The main method that initiates the program. * @param args Not used in this application. */ public static void main(String[] args) { // Create a sca.. 2024. 2. 14.
[Java Examples] Method Overloading in Java Method Overloading in Java 포스트 난이도: HOO_Intern # Example Code public class ExMethodOverloading { // Overloaded method for adding two integers public int add(int num1, int num2) { return num1 + num2; } // Overloaded method for adding three integers public int add(int num1, int num2, int num3) { return num1 + num2 + num3; } // Overloaded method for adding two doubles public double add(double num1,.. 2024. 2. 12.
[Java] 인텔리제이 다이어그램 메뉴가 안보일 때(IntelliJ UML Diagrams) 인텔리제이 다이어그램 메뉴가 안 보일 때(IntelliJ UML Diagrams) # IntelliJ IDEA Ultimate만 가능하다 인텔리제이 (IntelliJ)의 경우 플러그인 기능으로 UML 다이어그램을 자동으로 만들어 준다. 아래의 Figure 1 그림처럼 클래스나 패키지 자체에서 다이어그램을 생성할 수 있는 별도의 메뉴가 제공되고 있고 다이어그램에서 원하는 메서드나 변수들만을 설정해서 나타낼 수 있다. 다만 Intellij IDEA Ultimate가 아닌 Community로 제공되는 무료 버전을 사용 중이라면 다이어그램 기능은 제공되지 않는다. 많은 브로들이 다이어그램 플러그인을 못 찾아서 질문을 많이 하는데 IDEA 버전 자체가 다르면 아예 기능이 없다. 따라서 버전을 먼저 확인하고 해당 .. 2024. 2. 11.
[Java Examples] 상자 용량, 면적 구하는 예제 및 설명 상자 용량, 면적 구하는 예제 및 설명 포스트 난이도: HOO_Intern # Example Code public class Rectangle { private double length; private double width; // Constructor public Rectangle(double len, double w) { length = len; width = w; } // Setter for length public void setLength(double len) { length = len; } // Setter for width public void setWidth(double w) { width = w; } // Getter for length public double getLength() { .. 2024. 2. 7.
[Java Examples] 상자, 직사각형의 크기를 구하는 예제 및 설명 상자, 직사각형의 크기를 구하는 예제 및 설명 포스트 난이도: HOO_Intern # Example Code //Example1 public class Rectangle { private double length; private double width; public void setLength(double l) { length = l; } public double getLength() { return length; } public void setWidth(double w) { width = w; } public double getWidth() { return width; } public static void main(String[] args) { Rectangle rect = new Rectangle();.. 2024. 2. 5.
[C++/Arduino] Ultrasonic Range Sensor 예제코드 및 설명 Ultrasonic Range Sensor 예제코드 및 설명 포스트 난이도: HOO_Junior # Example Code and Explainations 이번 포스트에서는 HC-SR04 Ultrasonic sensor에 대한 간단한 예제코드와 결과를 살펴볼 수 있다. HC-SR04는 Ultrasonic sensor, Ultrasonic range sensor 또는 Ultrasonic distance sensor라고 불리는 초음파 거리 센서이다. 밀리미터부터 센티미터까지 초음파로 거리 측정이 가능한 센서이고 금액도 저렴하다 보니 교육용이나 가벼운 디바이스 제작에 자주 활용되는 센서 중 하나이다. 해당 센서의 핀은 VCC, Trig, Echo, GND 등으로 이루어져 있기 때문에 사용하기에 매우 쉽다는 걸.. 2024. 1. 30.
[C++ Examples/Arduino] RGB LED RGB LED 포스트 난이도: HOO_Junior # Example Code and Explainations 이번 아두이노 예제 포스트에서는 RGB LED를 다뤄볼 수 있다. 단일 색상만 내는 라이트와 달리 RGB LED는 여러 색상을 하나의 라이트에서 표현이 가능하고 색상 전환을 코딩을 통해서 설정할 수 있다. 아래의 예제코드는 ELEGOO에서 제공하는 기본 코드를 기반으로 수정된 아두이노 코드이다. 아래의 코드에서 중점적으로 리뷰해봐야 할 내용은 for문을 사용해서 RGB LED의 색이 변화하는 부분이다. 또한 LED도 센서의 한 종류이기 때문에 delay time을 넣어줘서 변할 수 있는 여유 시간을 설정해줘야 하는 부분도 유의해야 한다. 나머지는 digitalWrite와 analogWrite를 통.. 2024. 1. 26.
[C++ Examples/Arduino] External LED 예제 및 설명 External LED 예제 및 설명 포스트 난이도: HOO_Junior # Example Code 이번 포스트는 코딩을 하지 않고 아두이노 보드를 사용해서 LED를 켜보는 예제코드이다. 코드로 작동하는 게 아니라 외부적인 요인으로 인해 LED 등이 작동되며 저항(Resistors)들을 달리하여 LED 등의 밝기를 비교해 볼 수 있다. # Explanations Figure 1에서 볼 수 있듯이 별도의 코딩 없이 LED등을 아두이노 보드를 통해서 킬 수 있다. 여기서 Main poiints는 Resistors들을 달리하여 LED 등의 변화를 살펴보는 것이다. 기본적으로 많이 사용되는 250부터 100K까지 직접 resistors들을 달리 설치해 보고 실행해 봄으로써 LED 밝기의 변화를 관찰할 수 있다... 2024. 1. 15.
[C++ Examples/Arduino] Digital Inputs and If Statements 예제코드 및 설명 Digital Inputs by Using Led and Buttons (If Statements) 예제코드 및 설명 포스트 난이도: HOO_Junior # Example Code int ledPin = 5; int buttonApin = 9; int buttonBpin = 8; //byte leds = 0; void setup() { // put your setup code here, to run once: pinMode(ledPin, OUTPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); } void loop() { // put your main code here, to run repeatedly: if (digit.. 2024. 1. 15.
[C++ Examples/Arduino] Blink 예제코드 및 설명 Blink 예제 코드 및 설명 포스트 난이도: HOO_Junior # Example Code 아래의 예제코드의 경우는 아두이노 (Arduino)에서 학습을 위한 목적으로 공개되어 있는 예제코드이다. [File]-[Examples]-[01.Basics]-[Blink]를 통해서 "Blink" 예제코드를 찾을 수 있다 (Figure 1). /* Blink Turns an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO it is attached to digital pin 13, on MKR1000 on pin 6... 2024. 1. 14.
[Python Examples / Temp] 몬테카를로 카지노 주사위 몬테카를로 카지노 주사위 포스트 난이도: HOO_Middle # Example Code import random import matplotlib.pyplot as plt # Function to simulate die roll def rolldice(): dice = random.randint(1, 100) if dice 51: return True # Modified function for the play to return funds after each play def play_mod(total_funds, wager_amount, total_plays): Funds = [] for play in range(1, total_plays + 1): if rolldice(): total_funds += wa.. 2024. 1. 11.
[C Examples] 버블 정렬 (Bubble sort)을 활용해서 티켓 추첨하기 버블 정렬 (Bubble sort)을 활용해서 티켓 추첨하기 포스트 난이도: HOO_Junior # Example Code 이번 포스트에서는 버블 정렬 (Bubble sort)를 다루는 예제코드를 살펴볼 수 있다. 기본적으로 알고 있어야 하고 처음으로 가장 많이 접하는 버블 정렬의 경우 그만큼 사용할 수 있는 방법과 기회가 많다. 따라서 버블 정렬을 어떻게 구현해서 C에서 어떻게 사용하는지를 해당 코드를 통해서 살펴볼 수 있다. 코드에서 산출하고자 하는 내용은 단순하고 많이 봐온 티켓 추첨에 대한 내용이다. 따라서 버블 정렬이 어떻게 코드 내에서 활용되고 있는지를 쉽게 확인할 수 있다. 이러한 주요 functions들의 경우, 다른 프로그래밍 언어에서도 작성 방식만 다르지 동일하게 사용이 되기 때문에 다.. 2023. 12. 4.
[C Examples] Struct과 포인터를 활용해서 입력한 점수 저장하고 출력하기: struct, pointer Struct과 포인터를 활용해서 입력한 점수 저장하고 출력하기 포스트 난이도: HOO_Intern # Example Code 이번 예제코드에서는 Struct과 Pointer를 활용해서 사용자가 입력한 점수를 저장하고 다시 출력하면서 평균값을 산출해 낼 수 있다. 코드의 내용 자체는 매우 간단하기에 이번 예제코드에서 중점적으로 봐야 하는 부분은 Struct과 포인터가 어떻게 사용되는지이다. 코드 자체에서 하고자 하는 프로세스 자체가 간단하기 때문에 각 함수의 역할들을 이해하기 수월하다. #include #include struct node { float value; struct node* next; }; struct node* head = NULL; void displayList() { struct nod.. 2023. 12. 1.
[C Example Code] queue를 활용한 환자의 우선 순위 나타내기: malloc(), queue, struct, point, void() queue를 활용한 환자의 우선순위 나타내기: malloc(), queue, struct, point, void() 포스트 난이도: HOO_Junior # Queue, Enqueue, Dequeue 이번 예제코드에서는 Queue (큐)를 활용한 우선순위를 나타내고 변경하는 결과를 살펴볼 수 있다. 예제코드 포스트이다 보니 큐에 대해서 이미 알고 있겠지만 간단히 Wrap-up 하자면 큐는 First in first out, 즉 FIFO 원칙을 따르는 데이터 구조이다. 따라서 큐에 추가 된 첫 번째 요소가 가장 먼저 제거되는 것을 의미한다. 해당 예제코드를 살펴보면 큐에 입력된 값을 변경하여 우선순위를 변경해 줄 수 있는데 이 부분이 기존의 값이 삭제되고 새로운 값이 추가된다고 볼 수 있다. 큐에는 Enq.. 2023. 11. 29.
[C Examples] 출력되는 문장 거꾸로 뒤집기: void printReverse(), sizeof(), if() 출력되는 문장 거꾸로 뒤집기: void printReverse(), sizeof(), if() 포스트 난이도: HOO_Intern # Example Code 이번 예제코드에서는 void function을 사용해서 printReverse라는 recursive function을 만들어준 뒤에 출력되는 문장을 거꾸로 뒤집어줄 수 있다. Recursive는 프로그래밍에서 많이 사용하는 간단한 기능이기 때문에 어떻게 구현하는지를 정확히 이해하고 가는 것이 중요하다. 처음에는 다소 어려워 보이지만 "반복"에 초점을 두고 코드를 살펴보면 이해하는데 어렵지 않을 것이다. 아래의 예제코드에서는 void function 안의 printReverse() function이 어떻게 작성되어 적용되는지를 보는 것이 가장 중요하다.. 2023. 11. 28.
[Python] Random Seed(랜덤 시드) Random Seed(랜덤 시드) 포스트 난이도: HOO_Middle # Random seed Random seeds(랜덤시드)는 한국에서 난수 생성기라고도 부르며, 랜덤 한 값을 생성해 낸다. 랜덤 한 값을 생성해 낸다고 해서 마치 무작위 시드 값을 생성하는 것 같지만 반은 맞고 반은 틀린 말이다. 임의의 값을 랜덤 하게 생성해 낸다는 점에서는 맞지만 한번 정해진 시드 값은 다음 랜덤시드에서도 동일하게 산출된다. 따라서 랜덤 시드란 랜덤하게 컴퓨터가 시드 값을 정하는 걸 의미하며 랜덤 하게 시드 값이 계속 바뀌는 걸 의미하지는 않는다. 또한 랜덤 시드값은 사실 무작위로 정해지는 것도 아니다. 인간은 뇌에서 무작위 숫자를 선택해서 결정할 수 있지만 컴퓨터는 자율적으로 생각해서 랜덤 한 숫자를 선택하지 못.. 2023. 11. 10.
[C Examples] Stack을 활용해서 Stack 값 바꿔보기, Dynamic stack Stack을 활용해서 Stack 값 바꿔보기, Dynamic stack 포스트 난이도: HOO_Junior # Example Code 1 이번 포스트에서는 C언어의 Stack (스택) 값을 바꿔보는 예제코드를 통해 스택에 대해서 보다 더 익숙해질 수 있다. 특히 이번 예제코드에서는 동적 배열 또는 동적 스택이라고 불리는 Dynamic stack에 대해서 살펴볼 수 있다. 아래의 예제코드 1을 보면 Lottery 숫자가 스택으로 주어져있는 상황에서 사용자가 임의의 7자리 숫자를 입력하고 난 뒤에 중간 스택에 새로운 값이 추가되는 걸 확인할 수 있다. 이때 예제코드 1에서는 중간 배열의 스택이 지속적으로 추가가 되어 처음 스택보다 스택의 값이 증가하는 걸 알 수 있다. 반면에 예제코드 2에서는 중간에 새롭게.. 2023. 11. 9.
[C Examples] Recursive power function: 제곱근 계산기 Recursive power function: 제곱근 계산기 포스트 난이도: HOO_Intern # subTitle 이번 포스트에서는 반복문을 사용하지 않고 Recursive를 활용해서 제곱근을 계산해 주는 power function에 대한 예제를 살펴볼 수 있다. 아래의 예제코드를 보면 float type의 power라는 사용자 정의 함수가 작성이 되어 있는 걸 알 수 있다. 해당 블록을 살펴보면 if statement를 사용하여 반복할 조건과 아닐 조건을 설정해 줄 수 있다. 아래의 코드에서는 exponent가 0으로 더 이상 없을 경우 끝이 나고 else문에서는 exponent가 1씩 줄어들면서 base 값에 곱해지는 반복적인 recrusive case를 살펴볼 수 있다. 이처럼 자주 사용하는 기능.. 2023. 10. 30.
[C++ Example] 포인터(Pointer)를 활용한 간단한 배열 값의 증가 예제코드 포인터(Pointer)를 활용한 간단한 배열 값의 증가 예제코드 포스트 난이도: HOO_Intern # Example Code 이번 포스트에서는 포인터의 가장 기본적인 기능을 활용하여 배열의 elements들이 증가하는 것을 살펴볼 수 있다. 우선 void function을 사용해서 addNum()과 display()라는 기능을 만들어준다. addNum은 배열 안의 값, 즉 원소들을 증가시켜 주는 역할을 수행하고 display() 기능에서는 포인터를 활용해서 변화된 배열 원소들을 출력해 주는 역할을 수행한다. 여기서 addNum을 통해서 배열 안의 원소 값을 증가시킬 수 있는 범위를 지정할 수 있고 display()에서는 원하는 배열 원소까지 만을 출력할 수 있도록 설정이 가능하다. Figure1의 첫번.. 2023. 10. 13.
[C Examples] Stack push(), pop()을 활용해서 stack overflow와 underflow을 살펴보는 예제코드 Stack push(), pop()을 활용해서 stack overflow와 underflow을 살펴보는 예제코드 포스트 난이도: HOO_Junior # Example Code 이번 포스트에서는 push()와 pop() 기능들을 살펴보면서 Stack에 대해서 복습해 볼 수 있다. 이전 예제코드에서 다뤘던 Struct, 구조체와 더불어 이번 코드에서는 Stack에서 사용되는 기본적인 기능들을 통해서 Stack의 overflow와 underflow가 어떻게 이루어지는 지를 살펴볼 수 있다. 코드가 점차적으로 길어지고 기능들을 추가되다 보니, 어려울 수도 있겠지만 나눠서 살펴보면 이해하기가 훨씬 수월하다. 각 기능들이 어떻게 작동하고 해당 예제코드에서 어떤 역할을 수행하는지를 우선적으로 이해해 보는 게 좋다. .. 2023. 10. 13.
[C Examples] Struct를 활용하여 특정 위치의 값을 출력하거나 출력하는 순서를 바꿔보기 Struct를 활용하여 특정 위치의 값을 출력하거나 출력하는 순서를 바꿔보기 포스트 난이도: HOO_Junior # Example codes C언어에서 구조체라고 부르는 Struct은 Pointer와 함께 사용되는 편리한 기능 중 하나이다. 아마 C언어를 배우기 전에 다른 프로그래밍 언어를 배워본 적이 없거나 이제 막 전공자로서 공부를 시작했다면, 이 부분을 익히는 게 다소 어렵게 느껴질 수 있다. 하지만 모든 프로그래밍 언어가 그렇듯이 사람을 위한 언어이다 보니, 기계어를 익히는 것보다 훨씬 쉽다고 긍정적으로 생각하면서 차근차근 보면 생각보다 어렵지 않은 개념이다. Struct은 마치 글에서 "서식"과 비슷한 역할을 수행하는데, 반복적으로 사용되는 구조를 특정화하여 매번 선언하고 정의할 필요없이 쉽게 .. 2023. 10. 11.
[C++] .h와 .hpp 중에 어떤 것을 사용해야할까요? (.h와 .hpp 차이점) . h와 .hpp 중에 어떤 것을 사용해야 할까요? (. h와 .hpp 차이점) 포스트 난이도: HOO_Intern # C++ 헤더 파일 거두절미하고 C++ 헤더파일 확장자명으로 .h와 .hpp 중에 고민하고 있다면 둘 다 사용해도 문제없다. 글쓴이도 실제로 둘 다 사용하고 있으며, 실제로 공부를 하거나 실무에서도 C++기반임에도. h를 사용하는 경우가 많다. 그럼에도 굳이 .hpp가 존재하고 C++ 헤더파일로 사용하는 이유는 크게 2가지가 있다. #ifndef MY_HEADER_HPP #define MY_HEADER_HPP // Class declaration class MyClass { public: MyClass(int initialValue); void printValue() const; int .. 2023. 10. 3.
728x90