전체 글 241

[Project Review] 2023_2 Hitting Ball

2023년 2학기 Open Source Software 과목에서 진행한 프로젝트.보통 학교 수업에서 프로젝트를 진행할 때는 교수님이 프로젝트 주제를 좁히거나 기술에 제약을 두시는데, 이 과목에선 오픈 소스 소프트웨어에 걸맞게 제약 조건 없이 원하는 소프트웨어를 만들 수 있었다. (교수님 최고!) 복학하고 나서 첫 학기에 진행했던 프로젝트다 보니 해보고 싶은 주제가 굉장히 많았다.후보 주제가 다음과 같았다. 1. 미로 탈출을 인공지능을 이용해서 구현(군대에서 메이즈 러너 시리즈 책 전권을 다 읽을 정도로 인상깊었다)2. Saleinfo Bot(핫딜을 알려주는 봇이라고 생각하면 된다)3. 전자기기(노트북, 스마트폰, 테블릿) Benchmark (벤치 마크를 측정한 뒤 GeekBench 표본과 비교하여 내가 ..

Project Review 2024.06.24

[Java] 09. OOP - 추상 클래스(abstract class)

추상 클래스(abstract class)미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성할 수 없다.추상 클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.추상 클래스는 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서의 중요한 의미를 갖는다abstract class 클래스이름 { // ...}키워드 'abstract'를 붙이기만 하면 된다추상 클래스에도 생성자가 있으며, 멤버변수와 메서드를 가질 수 있다추상메서드(abstract method)선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 메서드. 미완성 메서드임미완성으로 남겨둔 이유는?메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에서는 선언부만을 작성하고, 주석을 ..

[Java] 08. OOP - 다형성(polymorphism)

다형성(polymorphism)여러가지 형태를 가질 수 있는 능력자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 구현조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다공통으로 포함된 인스턴스만 접근할 수 있다같은 타입의 인스턴스라도 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다반대로 자손 타입의 참조변수로 조상 타입을 참조할 수 없음(컴파일 에러)참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 한다참조변수의 형변환기본형 변수와 같이 참조변수도 형변환이 가능함단, 서로 상속 관게에 있는 클래스 사이에서만 가능함 (부모 자식)Up-casting : 자손타입을 부모타입에 // 형 변환 생략 가능(..

[BOJ/백준] 11286번. 절댓값 힙 - C++[cpp]

https://www.acmicpc.net/problem/11286   힙을 이용하여 문제를 해결해야 하기 때문에 C++에서 제공하는 priority_queue를 사용할 수 있다.절대값을 기준으로 비교하기 때문에 함수 객체를 만들고, 우선순위 큐의 comparator로 사용하여 문제를 해결하면 된다. comparator의 구체적인 작동방식이 헷갈려서 우선순위 큐에서 비교자의 작동 방식에 대해 적어보겠다. 비교자의 작동 방식비교자의 작동 방식을 더 구체적으로 이해해봅시다.여기서 간주한다는 의미는, 우선순위가 낮다는 의미이다.std::less는 x  true일 때 x가 y보다 작다고 간주합니다. 최대 힙에서 이는 큰 값이 높은 우선순위를 가지게 만듭니다.x가 y보다 작을 때, 작다고 간주하는게 당연하다고 생..

PS/BOJ 2024.06.24

[Project Review] 2023_2 편의점 Pos System

2023년 2학기 유닉스 프로그래밍 과목에서 진행했던 프로젝트. 시스템 콜(System Call)을 이용하여 프로그램을 만드는 프로젝트였다.교수님께서 리눅스 서버에서 프로그램 시연을 할 것이기 때문에, CLI로 구현하라고 하셨다 시스템 콜은 read(), open(), write() 부터 fork(), execve() 등등 굉장히 많기 때문에 사실 저수준에서 어떤 것을 구현하는 것이 과목의 목표와 조금 더 맞긴 하지만, 우리 팀은 기존에 C의 high level로 구현되어 있던 코드들을 system call을 이용하여 구현하는 것으로 프로젝트의 방향을 잡았다. 최대한 수업시간에 배운 시스템 콜을 이용하여 만들만한 프로그램을 찾다가, 편의점 Pos System을 만들기로 하였다.프로젝트 진행 기간은 약 2..

Project Review 2024.06.24

[Project Review] 2021_1 숫자 야구

2021년 1학기 디지털논리회로 과목에서 진행했던 프로젝트. 굉장히 허접(?)스럽다Logisim이라는 논리 회로 에뮬레이터로 원하는 기능을 구현하여 프로젝트를 완성하는 것이 목표였다. 이 과목이 개정되고 처음 수강했던지라 이전에 선배들이 했던 프로젝트가 없었기 때문에, 어떤 주제를 선정할까 고민하다가 숫자야구를 고르게 되었다. (해가 지날 수록 프로젝트 레거시들이 쌓이면서 기준점이 높아진 탓인가 이제는 로지심으로 캐치마인드를 구현할 수준이라고 한다...)  보통 숫자야구는 숫자 4개를 가지고 4 Strike를 달성하면 게임이 종료되지만, a~z 문자 3개를 가지고 3 Strike를 달성하도록 조건을 바꿔보았다.   https://github.com/DawnGlow/NumberBaseball_LogicCi..

Project Review 2024.06.24

[Project Review] 2021_1 Calcuator

2021년 1학기에 Object Oriented Programming(Java 강의)에서 진행했던 프로젝트. GUI로 만든 첫 프로그램이다. 이 프로젝트 제한 조건이, 반드시 JavaFx를 이용해서 프로젝트 결과물을 만들어 제출해야 했다. 사실 이 때 내 기억으로 JavaFx를 배우는데 너무 어려웠다. 컴포넌트, 컨테이너에 대한 개념부터, 외우기 힘든 Label, CheckBox와 같은 클래스들을 배우면서 어떻게 프로그램을 만들까 고민을 했었다. 고민하던도중 SceneBuilder라는 툴이 있다는 것을 알았고, SceneBuilder의 도움을 받아서 GUI 구현을 수월하게 할 수 있었다. 이 때 OOP 과목 말고 프로젝트를 진행하는 과목이 하나 더 있어서 복잡하지 않지만 JavaFx의 클래스를 적당히 사..

Project Review 2024.06.24

[Project Review] 2020_2 Auto Dispenser

2020년 2학기 "공학기초설계"라는 과목에서 진행했던 프로젝트 EV3 로봇 키트라는게 있는데, 각 부품을 조립할 수 있고, 코딩을 할 수 있다. 코딩을 통해서 부품의 동작을 제어하고, 원하는 결과물을 내는 것이 이 프로젝트의 목표였다. 이 당시에 코로나 19가 유행했던지라, 공공장소에서 손 세정제를 분사해주는 디스펜서에 불편함을 느끼고, 비접촉형 자동 분사기를 만들어봐야 겠다는 아이디어를 가지고 자동 디스펜서를 만들어봤다. 이 때 작성했던 보고서 내용은 아래에 적어둘게요 프로젝트 목적/필요성최근 코로나 19로 인한 손세정제, 손소독제 사용량이 증가하였다.  공공장소에서 손세정제, 손소독제를 사용할 시 펌프부분을 많은 사람들이 세정되지 않은 손으로 만지게 된다. 세저오디지 않은 손이 펌프에 접촉되다 보면..

Project Review 2024.06.24

[Project Review] 2020_1 도서 대여 시스템

지금으로부터 4년 전인 2020년에 진행했던 프로젝트 1학년 새내기때 C언어도 제대로 다루지 못했지만, 동아리 선배가 이끌어줘서 나름 성공적(?)으로 마무리했던 C언어 프로젝트 이다.지금 돌아보면 이 프로젝트가 지금까지 대학교 생활하는데 큰 도움이 되지 않았나 싶다. 첫 단추를 잘 끼운 느낌이다. 동아리 C언어 스터디에서, 2명이 팀을 이뤄서 C언어를 이용해서 자유 주제로 프로그램 하나를 만드는 것이 목표였다. 주제 선정은 그 당시 구글링을 하다가 너무 어렵지도, 복잡하지도 않은 무난한 주제로 선택했던 걸로 기억 구현했던 기능은도서 검색도서 대출도서 반납도서 삭제도서 추가정도 였다. 이때는 GUI를 이용할 생각도 못했다. 그냥 구조체, 포인터만 조금 다룰 줄 아는 수준이었기 때문에..      https..

Project Review 2024.06.24

[자료구조] 블룸 필터(bloom filter)

블룸 필터(bloom filter)블룸 필터는 해시 테이블에 비해 공간 효율이 매우 높은 방법이지만, 결정적(deterministic) 솔루션 대신 부정확한 결과를 얻을 수 있다.거짓-부정(false-negative)dl 이 없다는 것은 보장하지만, 거짓-긍정(false-positive)는 나올 수 있다.즉, 특정 원소가 존재한다는 긍정적인 답변을 받을 경우, 이 원소는 실제로 있을 수도 있고 없을 수도 있다.그러나 특정 원소가 존재하지 않는다는 부정적인 답변을 받았다면 이 원소는 확실히 없다뻐꾸기 해싱과 마찬가지로 블룸 필터도 여러 개의 해시 함수를 사용한다정확도를 위해 세 개 이상을 사용해야 한다블룸 필터는 실제 값을 저장하지는 않으며, 대신 특정 값이 있는지 없는지를 나타내는 부울 타입 배열을 사용..