-
Java Spring - 6
2024.10.11.(금) 6주차 QueryDSL querydsl이란? QueryDSL은 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크다. QueryDSL은 정적 타입(Q 타입)을 이용하여 SQL과 같은 쿼리를 자바 코드로 생성할 수 있게 해준다. querydsl을 사용하는 이유 자바 백엔드 기술은 Spring Boot와 Spring Data JPA를 함께 사용한다. 하지만 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL 이다. QueryDSL이 등장하기 이전에는 Mybatis, JPQL, Criteria ... Read More
-
Java Spring - 5
2024.10.07.(월) 5주차 질문 CRUD를 작성하는 시간! 질문 도메인 작성 import lombok.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Table(name = "questions") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Question extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long i... Read More
-
Java Spring - 4
2024.10.06.(일) 4주차 테스트 코드란? 테스트 코드의 필요성 테스트 시간이 빠르다 -> 테스트코드 없이 Postman과 같은 API 테스트 도구로 테스트 하면 다음과 같은 과정을 반복한다. 프로그램 실행 -> Postman 으로 HTTP 요청 후 확인 또는 결과를 콘솔에서 확인 -> 서버를 내린 뒤 다시 코드를 수정 -> 이 과정들을 반복한다면 생각보다 많은 시간을 쓰게 된다. 테스트 코드를 사용하게 된다면 빠른 시간 안에 여러 테스트 결과를 확인할 수 있다. 자동 검증이 가능하다. -> Postman을 쓴다면 결과가 잘 넘어왔... Read More
-
Java Spring - 3
2024.10.04.(금) 참고 자료: GDG on Campus: Seoultech Back Session 3주차 인증과 인가 요구사항: 로그인하지 않은 사용자는 질문과 답변을 작성하지 못하게 해주세요!! 대부분의 사이트에는 로그인이 있고 로그인한 사용자와 아닌 사용자가 할 수 있는 기능이 다르다. 우리 프로젝트에서는 나중에 질문과 답변을 구현할 때 로그인하지 않은 사용자는 질문을 작성하거나 수정할 수 없어야 한다. 로그인 유무를 서버에서 진행하는데, 이때 진행되는 절차가 인증과 인가이다. 인증: 사용자가 누구인지 확인하는 절차, 회원가입하고 로그인하는 것 인가: 유저에 대한 권한을 허락... Read More
-
Java Spring - 2
2024.10.02.(수) 참고 자료: GDG on Campus: Seoultech Back Session 2주차 User 레포지터리와 서비스 생성 레포지토리는 생성된 데이터베이스 테이블의 데이터들을 저장, 조회, 수정, 삭제할 수 있도록 도와주는 인터페이스이다. JpaRepository는 JPA가 제공하는 인터페이스 중 하나로 CRUD 작업을 처리하는 메서드들을 이미 내장하고 있다. CRUD는 Create, Read, Update, Delete의 앞글자만 따 만든 단어로, 데이터 처리의 기본 기능을 의미한다. @Repository: 스프링이 레포지토리로 인식하게 만들... Read More
-
Java Spring - 1
참고 자료: GDG on Campus: Seoultech Backend 세션 자료 필사 Spring 이란? Spring은 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크 Spring Boot란? Spring Boot는 Spring 프레임워크를 더욱 쉽게 사용할 수 있도록 도와주는 확장 프로젝트. 스프링 부트는 스프링(Spring) 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있다. 톰캣(Tomcat)이란? Tomcat Tomcat이란? 아파치 소프트웨어 재단의 웹 어플리케이션 서버 (Web Application Server, WAS... Read More
-
혼자서 공부하는 네트워크 - 7
2024.07.10.(수) 03-1 LAN을 넘어서는 네트워크 계층 네트워크 계층에서는 통신을 빠르게 주고받기 위해 패킷이 이동할 최적의 경로를 결정하는 라우팅이 이루어진다. IP는 네트워크 계층의 핵심 프로토콜로, IP 주소 지정과 IP 단편화를 수행한다. 네트워크 계층의 IP 주소를 이용해 네트워크상의 호스트를 식별할 수 있다. IP에는 IP 버전 4(IPv4)와 6(IPv6)가 있고, 각각 주소의 길이와 헤더의 구성이 다르다. ARP는 동일 네트워크 내에 있는 호스트 IP 주소를 통해 MAC 주소를 알아내기 위한 프로토콜이다. IPv4의 대표적인 기능 두 가지... Read More
-
혼자서 공부하는 네트워크 - 6
2024.07.04.(목) 02-4 스위치 스위치는 포트별로 콜리전 도메인을 나누면 전이중 모드 통신을 지원하는 데이터 링크 계층의 장비이다. MAC 주소 테이블로 MAC 주소를 학습해 원하는 포트로 패킷을 포워딩하고 원치 않은 포트는 필터링할 수 있다. VLAN은 스위치로 만들 수 있는 가상의 LAN이다. 포트 기반 VLAN과 MAC 기반 VLAN이 있다. 스위치는 전이중 통신을 지원한다. 스위치는 데이터 링크 계층의 장비이다. 스위치는 MAC 주소를 학습할 수 있다. 스위치로 VLAN을 구성할 수 있다. 스위치를 이용해 VLAN을 구성할 수 있다. 포트 기반 VLAN... Read More
-
혼자서 공부하는 네트워크 - 5
2024.07.03.(수) 02-3 허브 허브는 여러 대의 호스트를 연결할 수 있는 물리 계층의 장비로, 전달받은 신호를 다른 모든 포트로 내보내며 반이중 모드로 통신한다. 반이중 모드는 데이터를 한 번에 한 방향으로만 전송할 수 있는 통신 방식이고 전이중 모드는 동시에 양방향으로 전송할 수 있는 통신 방식이다. 콜리전 도메인이란 충돌 발생 가능성이 있는 영역을 의미한다. 허브에 연결된 호스트 전체가 콜리전 도메인에 속한다. CSMA/CD는 반이중 이더넷 네트워크의 충돌 방지 프로토콜이다. 허브는 물리 계층의 장비이다. 허브는 반이중 방식으로 통신한다. 허브는 송신지를 제외한 모든 ... Read More
-
혼자서 공부하는 네트워크 - 4
2024.07.02.(화) 02-2 NIC와 케이블 NIC는 호스트와 통신 매체 사이의 인터페이스 역할을 담당하는 네트워크 장비이다. 트위스트 페어 케이블은 구리 선을 통해 전기 신호를 주고받는 유선 통신 매체이다. 브레이드 실드 혹은 포일 실드로 감싸 노이즈로부터 구리 선을 보호할 수 있다. 또한 케이블의 카테고리에 따라 종류를 분류할 수 있다. 광섬유 케이블은 광섬유를 통해 광신호를 주고받는 유선 통신 매체이다. 코어의 지름에 따라 싱글 모드와 멀티 모드로 나뉜다. 실드에 따른 트위스티드 페어 케이블의 종류 종류 케이블 외부 구리 선 쌍 ... Read More
-
혼자서 공부하는 네트워크 - 3
2024.07.01.(월) 02-1 이더넷 이더넷은 다양한 통신 매체의 규격들, 송수신되는 프레임의 형태와 프레임을 주고받는 방법 등을 정의한 네트워크 기술이다. 오늘날 유선 LAN 환경에서 가장 대중적으로 사용된다. IEEE 802.3은 이더넷 관련 표준 규격들의 집합으로, 이더넷 표준에 따라 지원되는 통신 매체의 종류와 전송 속도가 달라질 수 있다. 이더넷 프레임은 프리앰블, 수신지 MAC 주소, 송신지 MAC 주소, 타입/길이, 데이터, FCS로 구성된다. MAC 주소는 네트워크 인터페이스마다 부여되는 물리적 주소이다. 이더넷 기술로 구현되는 계층: 물리 계층, 데이터 링크 계층 이더넷 프레임: ... Read More
-
혼자서 공부하는 네트워크 - 2
01-3 네트워크 미시적으로 살펴보기 프로토콜은 노드 간의 합의된 규칙이나 방법을 의미한다. 프로토콜마다 목적과 특징이 다르기에 헤더에 포함되는 정보도 달라질 수 있다. 네트워크 참조 모델은 네트워크의 전송 단계를 계층적으로 표현한 것이다. OSI 모델은 통신 과정을 7개의 계층으로 표현한다. TCP/IP 모델은 통신 과정을 4개의 계층으로 표현한다. 캡슐화는 데이터 전송 과정에서 헤더(및 트레일러)를 추가해 나가는 것을 의미한다. 역캡슐화는 캡슐화 과정에서 붙인 헤더(및 트레일러)를 제거하는 과정을 의미한다. PDU는 각 계층에서 송수신되는 메세지의 단위이다. 프로토콜은 정보를 주고받는 통신 ... Read More
-
혼자서 공부하는 네트워크 - 1
01-1 컴퓨터 네트워크를 알아야 하는 이유 컴퓨터 네트워크란 여러 장치가 연결되어 정보를 주고받을 수 있는 통신망을 의미한다. 많은 프로그램이 네트워크를 통해 다른 장치와 상호 작용하며 실행된다. 인터넷은 여러 네트워크를 연결한 ‘네트워크의 네트워크’를 의미한다. 여러 장치가 연결되어 정보를 주고 받을 수 있는 통신망을 네트워크라고 한다. 네트워크에 대한 이해는 프로그램을 유지 보수하는 과정에 도움을 줄 수 있다. 많은 프로그램이 네트워크를 통해 다른 장비와 상호 작용하며 실행된다. 채용 시 네트워크에 대한 지식을 강조하거나 검증하는 기업이 존재한다. 01-2 네트워크 거시적으로 살펴보기 ... Read More
-
Scoopadive
scoopadive.com 장고 웹사이트 개발 성공. 설명서는… 2월 말 정도에 적어 두는 것으로 하자. Read More
-
영어로 쓴 자기소개서
KFAS에서 추죄하는 Korea-Nordic Future Challenge 2기 에 지원해 보려고 한다. 영어로 자기소개를 써야 하는데, 시간이 없어서 번역기 안돌리고 바로 써봤다. 필수 답변) What do you wish to achieve through this program? (800 words) *글자 수가 아닌 단어 수 - 영문으로 작성해주시길 바랍니다. I’m interested in improving my skills and abilities through various experiences. I study computer science in college and I actually solve p... Read More
-
데이터통신 시험공부 겸 과제
2023.10.08.(일) Digital Transmission: Digital-to-Digital Conversion Data can be either digital or analog. Signals that represent data can also be digital or analog. How can we represent digital data by using digital signals? The conversion involves three techniques Line coding Block coding Scrambling Line Coding Line Coding ... Read More
-
FSM (Finite State Machine)
2023.09.19.(화) Finite State Machine 유한 상태 기계란? 유한 상태 기계는 자신이 취할 수 있는 유한한 갯수의 상태들을 가진다. 그 중 반드시 하나의 상태만 취한다. 현재 상태는 특정 조건이 되면 다른 상태로 변할 수 있다. 유한 상태 기계는 가능한 상태들의 집합과 각 상태들의 전이 조건으로 정의될 수 있다. 상태들의 노드와 그 노드들을 연결하는 조건의 엣지로 표현할 수 있다(그래프). ex) 전구의 예 전구는 ON/OFF 두 가지 상태를 갖는다. 전구는 반드시 둘 중 하나의 상태만 취한다... Read More
-
클래스 다이어그램
2023.09.18.(월) 클래스 다이어그램에 대하여 UML 다이어그램에는 Structure Diagram (정적, 구조 표현)과 Behavior Diagram (동적, 시퀀셜) 이 있는데 클래스 다이어그램은 Structure Diagram 에 속한다. 다른 사람들과의 의사소통 또는 설계를 논의하거나, 전체 시스템의 구조 및 클래스의 의존성 파악 및 유지보수를 위한 설계의 back-end 문서를 작성할 때 사용한다. ** 작성 시 주의 사항 ** 명확한 이름을 부여하고, 간결하게 그려야 한다(Getter, Setter, Constructor는 생략 가능). UML을 작성하는 것이 개발비용보다 더 들어가는 경... Read More
-
GDSC 코어 커리큘럼 준비, 웹해킹 스터디 준비, Block It 프로젝트 마무리, 독서
2023.09.17.(일) 1. GDSC 커리큐럼 준비 Web 커리큘럼 3주차는 내가 준비하기로 했다. 저번주까지 컨트롤러, 엔티티, JPA 에 관한 공부를 했더라면, 이번주차는 템플릿에 관한 얘기를 할 터이다. 도메인이란? @ResponseBody 어노테이션이란? 템플릿 의존성 주입 타임리프 (Thymeleaf) ROOT URL 서비스 (Service) 질문 상세 추가하기 URL 프리픽스 (prefix) 2. 웹 해킹 스터디 준비 바쁜데… 결국 내가 스터디장이 되었다. 깃허브도 관리하고, 회의도 이끌어 나가야 하고. 무엇보다도... Read More
-
유니티 활용법과 스프링부트 공부
2023.09.03.(일) Block It 유니티 프로젝트 기획, 인게임 로직 구현. 방학 동안 잘 끝내 두었다. 이제 정말 유니티를 써서 화면도 만들어 보고 할일들을 조금씩 해 나가야 하는데, 마침 개발 팀장님이 버튼은 어떻게 만드는지, 스크립트 코드는 어떻게 넣는지 방법을 알려 주셨다. 먼저 필요한 화면에 대한 패널을 만든다. 그 후에 버튼, 인풋필드, 텍스트 등등 필요한 UI 들을 가져다가 놓는다. 여기서 각 UI 들의 크기나 비율을 잘 맞추어야 한다. 전의 패널들과 직접 비교할 수도 있다. 바로 C# 스크립트를 만들어 변수들을 선언하고, 각 변수들에 대응되는 객체들을 연결 시킨다. 만약 변수를... Read More
-
GDSC Web Core 활동 준비
2023.08.27.(일) GDSC 면접 공고가 떴다. 여러 가지 소셜 활동 및 네트워킹을 해보고 싶었던 찰나, 좋은 기회라고 생각하여 일단 지원해 보았다. 면접 기간 동안에 독일 여행이 계획되어 있었으므로, 독일 아침 6시에 일어나 줌으로 면접을 보았다. “왜 멤버가 아닌 코어로 지원을 해주셨나요?” 뭐라고? 멤버와 코어가 따로 있었다니. 도대체 그게 뭔데. 하지만 당황한 티는 전혀 내지 않았다. “멤버로 지원할 수도 있었지만, 코어를 맡게 되면 더욱 책임감을 가지고 열심히 임할 수 있게 될 것 같아서 멤버가 아닌 코어로 지원하였습니다.” “우리 동아리에 필요하신 분 같네요!” 그렇게 코어가 되었다.... Read More
-
STCE 암호동아리 암호 공모전 준비 3주차
2023.07.13.(목) 이번주는 뭘해야 할까… 뭔가는 해야할 것 같아서 멘토님께 일을 달라고 했더니! 멘토님께서 로컬에 남는 데이터 중에 공개키 (public key) 가 저장되는 건지 확인 해보라고 하셔서 찾아 보기로 했다! 일단… 공개키(public key)가 뭔지부터 제대로 알아야 할 것 같은데 공개키가 로컬에 구체적으로 어떤 식으로 남게 되는 걸까? 복호화란? 키쌍 검증이란? 공개키(public key) 공개키 암호화! 원리와 사용방법을 알아보자! 공개키 암호화는 공개되어 있는 키를 이용하는 암호화 방법이다. 공개키 암호화에 사용되는 키는 2가지 이다. 공개키와 개인키.... Read More
-
STCE 암호동아리 암호 공모전 준비 2주차
2023.07.01.(토) Etherwall Etherwall About Etherwall is a secure open source ethereum wallet for Windows, Mac OS X and Linux operating systems. Etherwall supports the TREZOR ONE hardware wallet for storing keys. In full node client mode all data is stored on your computer, but you have to download the full (30GB+ and growing) ethereum blockch... Read More
-
STCE 암호동아리 암호 공모전 준비 1주차
2023.06.28.(수) 국가 암호 공모전 주제 및 일정 암호화폐 지갑 패스워드 복구 매커니즘 분석 패스워드 복구 필요성: 비정형파일(.hwp, .docx, .pdf, .zip 등), 암호화 앱, 암호지갑 등에서 제공하는 암호기술이 범죄 증거를 은닉하는 데 활용되어, 실체적 진실 발견과 범죄수익 환수에 막대한 지장을 초래하고 있음. 이에 따라, 법집행기관의 영장 집행 시 피압수자 협조여부와 상관 없이 범죄 단서를 확보하기 위한 기법 연구가 절실히 필요. 패스워드 크래킹 (Password Cracking 기법): Dictionary Attac... Read More
-
STCE 암호동아리 세미나 발표 준비
2023.06.25.(일) 6장. 블럭 암호 운용 정보보안 일반 - 블럭 암호 운영모드 CBC, ECB, CTR, CFB 블럭 암호 운용 방식 (block cipher modes of operation) 암호학에서는 블록 암호 운용 방식은 하나의 키에서 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다. 블록 암호는 특정 길이의 블럭 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그 블록들을 어떻게 암호화할지 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식 이라 부른다. 초기화 벡터 IV (Initialization vector... Read More
-
피우다 앱 개발 프로젝트
2023.06.13.(화) 6월 13일 드디어 피우다 프로젝트 끝. 본격적인 개발은 끝이 났다. 5월 10일부터 그 주 주말까지는 기획한 것을 토대로, 피그마를 사용하여 앱의 전체적인 도안을 모두 그렸다. 5월 14일에 노마드 코더 Dart 강의를 모두 보았다. 날밤을 까서 전부 봤는데.. 다 보는 데에 5~6 시간 정도 걸린 것 같다. 언어 자체가 어렵지는 않아서, 한 번씩 보고 따라쳐보니 쉽게 감이 왔다. 5월 15일에 회장님의 도움을 받아 맥북을 초기화 하고 homebrew 로 iTerm, VSC, 플러터를 깔고 세팅을 마쳤다. 이때 터미널을 많이 사용하게 되면서, Unix/리눅스/운영체제 공부를 따... Read More
-
현재 상태 점검
2023.5.28.(일) 이틀 후면 시험 기간이 찾아온다. 1학년 때는 성적 장학금도 받았는데… 점점 떨어지더니 지금은 학고 수준이 되었다. 시간은 계속 흐르고, 중간에 전공과 전혀 관련 없는 일들도 조금 했었는데… 1년 간 꼬맹이들 영어도 가르쳐 보고, 스쿠버 다이빙 동아리 훈련 부장을 맡아서 스쿠버 다이빙도 열심히 해보고, 코딩 아르바이트도 해보고.. 술도 뒤지게 마셔보고… 이것저것 재밌는 일들이 많이 저지르다 보니 어느덧 나는 한국 나이로 23세. 2학년이 되었다. 이젠 정말… 정신 차려 공부할 때가 왔다. 공부하기 싫고… 현타 오고… 마음은 조급해서 이 마음을 블로그에 남겨 본다. 첫번째. 나는 어... Read More
-
flutter 씹어먹기
2023.5.21.(일) Flutter Flutter란 무엇인가요? 위 링크에 들어가보면, Flutter는 Google에서 개발 및 지원하는 오픈 소스 프레임워크입니다. 프런트엔드 및 풀 스택 개발자는 Flutter를 사용해 다수의 플랫폼에 대한 애플리케이션의 사용자 인터페이스(UI)를 단일 코드 베이스로 구축합니다. 라고 되어 있다. iOS, Android, 웹, Windows, MacOS, Linux의 여섯 가지 플랫폼에 대한 애플리케이션 개발을 지원한다. 네이티브 앱 개발에 보다 크로스 플랫폼 앱 개발에 더가까움 iOS와 같은 특정 플랫폼을 위한 애플리케이션을 코딩하는 것을 네이티브 앱 개발이라고 합... Read More
-
Dart 씹어먹기
2023.5.14.(일) 베리어 프리 공모전, 를 준비하고 있습니다. 기획은 마친 상태이고... 이제 정말 개발을 시작하여야 합니다. flutter 를 사용해서 개발을 할거고, flutter 를 쓰려면 dart 라는 언어를 알아야 하더군요. 팀원 모두 개발 경험 없음… 절망적인 상황이지만, 아이디어가 있고 피그마로 도안을 뚜렷하게 그려놓았으므로 열심히 공부하며 개발하면 안될 것 없으리라 생각됩니다. 개발 기간이 한 달이 안되기 때문에 공부할 시간이 많이 없어서, 하루 날 잡고 노마드 코더의 Dart 무료 강의를 전부 들었습니다. 다행히도 Dart 는 크게 어렵지는 않았어요. Dart 문법에 대해 정리해 ... Read More
-
Branch Protection Rule 적용해 브랜치 보호하기
2023.05.04.(목) AI 쿼리도… 프로젝트 경험이 많은 팀원 덕분에 기획서와 명세서를 무리 없이 잘 작성하였습니다. Quoridor 이제 남은 것은 신청서 작성과 실질적인 개발인데, 개발을 하려면 팀원들 간의 역할 분담과 소통이 중요하겠죠. 그리고 팀 개발에서 빠질 수 없는… 깃 관리!! 오늘은 Branch Protection Rule, 즉 브랜치 보호 전략에 관해 알아보았습니다. Dev.Cho(Dev World)님의 블로그 를 그대로 가져와 참고하였습니다. Branch 를 보호하는 것이 중요한 이유 Git 의 Branch 는 협업을 위한 기본 토대이기 때문에 최소한의 규칙을 정해야 협업 시의 ... Read More
-
4월 말, 할일 정리
2023.4.30.(일) 할 일이 정말 많다. 주변을 보면 정말 다 바쁘게, 정신 없이 산다. 그러나 스스로 걱정되는 부분은, 이렇게 일을 막 벌려놨다가 모든 일이 이도저도 아니게 될까봐… 시간이 흐른 후 뒤돌아 보았을 때, 남는 것이 없게 될까봐. 그것이 가장 두렵다. 그래서 이번 포스트에서는 할 일들을 정리하고, 우선순위를 매기고 어떻게 해나갈 건지 나름 정리를 해보고자 한다. 우선순위 할일 하루 투자 시간 설명 : 1. 알고리즘 실력 쌓기 3시간 알고리즘은 뭐랄까… 그나... Read More
-
네 번째 C++ 스터디, 함수
함수의 정의 함수(Function)란?? 반복적인 프로그래밍을 피할 수 있다. 프로그램을 여러 개의 함수로 나누어 작성하면, 모듈화로 인해 전체적인 코드의 가독성이 좋아진다. 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때에도 손쉽게 유지보수 할 수 있다. int sum(int x, int y) { } 위에서 int 부분은 반환 자료형, sum 부분은 함수 이름, 소괄호 () 안에 있는 것들은 매개변수 라고 한다. 대괄호 {} 안의 부분은 함수 몸체라고 한다. 반환 타입(return type): 함수가 모든 작업을 마치고 반환하는 데이터의 타입을 명시한다. 함수 이름: 함... Read More
-
Quoridor in Java
2023.04.09.(일) 쿼리도 프로그램 쿼리도 프로그램. 미루고 미루다 이제서야 만들어 보려고 한다. 쿼리도 서버, UI (더 나아가 인공지능 시스템까지…) 를 만들어 나가기 전에, 쿼리도 프로그램의 로직과 알고리즘을 객체지향언어인 자바(Java)로 짜고 있다. 깃 주소: junie082/Quoridor_in_Java 게임 규칙 필요한 패키지들 board 보드판 moves 플레이어의 이동 partition 나무 판자 players 플레이어 예외 상황들 깨끗하지 못한 코드 UI는 어떻게?? 서버는 어떻게?? Read More
-
세 번째 C++ 스터디, 제어문 (while, for, switch)
2023.03.27.(월) 제어문 제어문-조건문 if 문 if (조건) { 조건이 true 일 때 실행; } if else 문 if (조건){ 조건이 true 일 때 실행; } else { 조건이 false 일 때 실행; } else if 문 if (조건 1) { 조건 1이 true 일 때 실행; } else if (조건 2) { 조건 2가 true 일 때 실행; } else if (조건 3) { 조건 3이 true 일 때 실행; } .... else { 위 조건들이 모두 false 일 때 실행; } 과연 위 실행 코드들의 순서가 중요... Read More
-
두 번째 C++ 스터디, 자료형과 연산자
2023.03.20.(월) 자료형이란?? 자료형 또는 데이터 타입(data type)은 실수, 정수, 불린(boolean) 자료형 등 여러 종류의 데이터를 식별하는 분류이다. 자료형은 일반적으로 다음을 포함한다. 정수 (integer) 불린 (boolean) 문자 한 개 (character) 부동소수점, 실수 (floating-point number) 숫자, 문자로 이루어진 문자열 (string) 자료형이란? 위키백과 자료형의 종류 자료형(Data Type)이란 변수의 종류를 의미한다. 변수에 값을 담기 이전에, 정수, 실수, 문자, 문자열 등 어떤 값들을 지닐 수 있는지 자료형을... Read More
-
첫 번째 C++ 스터디
2023.03.12.(월) VS Code 설치 VSC 에서 C/C++ 코딩 환경 구축하기 C++ 란?? 객체 지향 및 멀티 패러다임을 지원하는 프로그래밍 언어 C언어에는 없는 객체지향 프로그래밍을 지원하기 위한 C언어의 확장판 개인적인 경험… 작년까지 C 를 사용하여 알고리즘 문제를 해결하다 보니… 스택, 큐, 덱 등등 기본적인 자료구조들까지도 직접 구현해야 했다. 백준 10828번. 스택 #include <stdio.h> #include <stdlib.h> #include <string.h> struct Stack {... Read More
-
로또 프로그램
2023.03.05.(일) 2023년 목표, 나는 백엔드 마스터가 된다. 백엔드를 공부하기에 앞서서, 나는 Java를 사실 배워본 적이 없다. 기껏해야 다룰 줄 아는 언어라고는 C, C++, Python 정도로, 사실상 Java 언어에 대한 이해부터 높여 나가야 한다. TCP 스피링스프링 첫 과제, 로또 만들기 프로그램은 이렇다: 로또 프로그램 기능 요구 사항 로또는 3가지 종류의 로또가 있다. 작은 로또 2. 중간 로또 3. 큰 로또 로또 번호의 숫자 범위는 1~45까지이다. 1개의 로또를 발... Read More
-
Baekjoon 1181번. 단어 정렬
2023.2.26.(목) 문제 접근 방법 조건이 참 까다롭습니다. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 일단 길이가 짧은 순서대로 정렬을 해주는 것이 좋겠습니다. 따라서 벡터에 pair, 즉 <int, string> 형태로 입력된 자료들을 넣어줄 것입니다. 문자열의 길이와 문자열 쌍을 벡터에 하나씩 넣어주는 것입니다. 이 상태에서 <algorithm> 라이브러리에 들어 있는 sort 함수를 사용하여 벡터를 정렬하여 줍니다. 정렬은 pair의 first를 기준으로 정렬됩니다. 만약 두 번째 값인 secon... Read More
-
Baekjoon 2580번. 스도쿠
2023.02.12.(일) 문제 백트래킹과 깨달음 재귀함수 및 그와 관련된 알고리즘을 이해하는 것이 그동안 너무 어려웠습니다. 사실 시간이 지난 지금도 원리를 정확히 이해했다고 보기는 어려워요. 물론 다른 알고리즘도 마찬가지이긴 하다만, 재귀함수 부분이 저한테는 유난히 어렵게 느껴집니다. 처음에 백트래킹 알고리즘을 접했을 때는, 도대체 이게 무슨 말인가… 문제를 풀려고 해도, 처음에 어디서부터 어떻게 코드를 짜야할지 감이 전혀 오지 않았습니다. 어쩔 수 없이 제가 이해한 대로 문제를 차근차근 풀어나가는 방식이 아니라 강의를 보고 다른 사람의 풀이를 여러 번 보고, 또 외우고를 반복했습니다. 그러고 시간이... Read More
-
Baekjoon 7569번. 토마토
2023.02.05.(일) 문제 접근 방법 저는 BFS를 사용해서 이 문제를 해결하기로 했습니다. 어느 토마토를 기준으로 위, 아래, 앞, 뒤, 왼쪽, 오른쪽을 먼저 모두 살펴 보아야 하기 때문입니다. BFS는 스택이 아닌 큐를 사용합니다. r, c, h, total이라는 이름의 큐들을 만듭니다. r은 행의 인덱스, c는 열의 인덱스, h는 층의 인덱스를 뜻합니다. 토마토가 있는 상자는 box라는 삼차원 배열로 표현하구요. 처음에 상자에서 익어 있는 토마토가 있는 좌표들을 미리 이 큐들에 넣어둡니다. 토마토 하나를 기준으로 위, 아래, 앞, 오른쪽, 뒤, 왼쪽을 확인하여(box[r.front()][c... Read More
-
Baekjoon 1068번. 트리
2023.1.26.(목) 문제 접근 방법 우리는 트리 문제를 해결하고 있습니다. 먼저 노드들이 입력 되었을 때, 그 노드들 간의 연결을 나타낼 수 있어야겠죠. 벡터 배열 tree를 하나 만들고, 각 인덱스를 노드로 하여금 연결된 다른 노드들을 인덱스 공간에 push 하여 넣습니다. vector<int> tree[51]; int parent; for (int i = 0; i < N; i++) { cin >> parent; input[i] = parent; if (parent == -1) continue; else tree[parent].pu... Read More
-
Baekjoon 11725번. 트리의 부모 찾기
2023.1.20.(금) 문제 접근 방법 이 문제는 ‘트리’의 개념을 이해하고 있어야만 해결할 수 있습니다. 각 노드의 부모를 구하려면 어떻게 해야 할까요? 저는 먼저 벡터 배열 edges을 떠올렸습니다. 배열의 각 공간에 벡터가 들어가는 것이지요. 그림에서 파란색으로 그려낸 컨테이너가 바로 제가 표현하고자 하는 벡터 배열입니다. 노드의 개수가 최대 100,000개이니, 인덱스가 0부터 100,000까지인 벡터형 배열을 만듭니다. 만약에 입력값으로 1 6이 들어 온다면, 배열의 인덱스가 1인 곳에 6을 push_back() 하여, 1에 원소 6이 연결되었음을 표현합니다. 1의 입장에서 6이 연결된... Read More
-
장화신은 고양이-끝내주는 모험
Dreamworks가 정말 영화를 잘 만든다고 생각한 것이 을 봤을 때다. 어렸을 때 여러 번 봤고, 성인이 되었을 때 다시 한 번 봤다. 다 큰 지금 다시 돌려 보아도 이 유치하게 느껴지지 않고 유쾌하면서 여운이 남는다. 다른 영화들은 한 번 보면 ‘재밌다’ 라는 감상평이 남을 뿐 내용이 기억나지를 않거나 아니면 해당 영화 자체를 본 기억이 나지 않는 경우가 대다수이지만, 은 예나 지금이나 가장 재미있게 본 영화 중 하나로 기억에 오래 남는다. 나름 추측해 보건대, 순진한 그림체들 뒤에 어린아이들 뿐만 아니라 성인들까지 깊게 공감할 수 있는 철학이 숨겨져 있기 때문일 것이다. 그렇게 감명 깊에 봤던 에 나... Read More
-
Baekjoon 1461번. 도서관
문제 접근 방법 가만히 생각해 봅시다… 직선상의 좌표 0에는 우리가 가져다 놓아야할 책들이 있습니다. 책의 원래 자리는 음수부터 양수까지 다양하게 위치해 있죠. 어느 한 좌표를 찍고 좌표 0으로 돌아올 때 걸어야할 거리는 해당 좌표의 절댓값에 2를 곱한 값과 같습니다. 마지막 책을 놓을 때는 좌표 0으로 되돌아오지 않아도 되니 2를 곱하지 않아도 되겠죠. 2를 곱하지 않아도 된다라… 그러면 0을 기준으로, 양 극단에서의(맨 왼쪽 좌표와 맨 오른쪽 좌표) 절댓값이 가장 큰 좌표에 2를 곱하지 않는 것이 유리할 테니, 먼저 양 극단의 절댓값을 비교해 준 후에 더욱 큰 값을 맨마지막에 들르는 좌표로 두겠습니다.... Read More
-
웹 프론트 스터디 front-timer (javascript)
2023 TCP 첫 스터디, 웹 프론트 엔드 1주차. 타이머 만들기 javascript html, css, javascript 를 동시에 사용하여 어떤 프로젝트를 해보는 것은 이번이 처음이다. 사실 처음에 엄청 막막했다. 뭐부터 시작해야 할까? html 으로 뼈대를 만들고, css 로 디자인을 살짝 해 준 후에, 각 버튼과 시간을 나타내는 레이블이 상호작용하며 내가 원하는 동작을 해주도록 javascript 로 프로그래밍을 해주어야 하는데. 되는 대로 관련 유튜브 영상을 찾아보기 시작했다. 자바스크립트 중급 강좌 #12 setTimeout / setInterval 이렇게 유튜브, 용래 선배가 깃허브에 남겨주... Read More
-
Baekjoon 13904. 과제
문제 접근 방법 처음에 이 문제를 보고 떠올린 아이디어는 : 입력들이 들어올 때, 각 입력값을 배열에 알맞은 기준에 따라 집어 넣습니다. 각 입력 값을 배열 공간에 넣는 규칙은 예시를 들어 설명해 보도록 하겠습니다. 배열의 이름을 greedy 라고 합시다. 입력 값이 7 4 60 4 40 1 20 2 50 3 30 4 10 6 5 라고 한다면, 처음의 입력 값인 4, 60에 대하여 greedy[4]에 60을 집어 넣습니다. 다음 입력 값인 4, 40에 대하여 greedy[4]에 40을 넣으려고 하였지만, 이미 60이라는 값이 있기 때문에 40과 60을 비교합니다. 40이 60보다 작기 때문에, 이번... Read More
-
웹 프론트 스터디 front-timer (html, css)
2023 TCP 첫 스터디, 웹 프론트 엔드 1주차. 타이머 만들기 html html 을 구성하는 것은 크게 어렵지 않게 느껴졌다. 여러 가지 태그들을 알맞게 배열하면 되는 문제였다. button, script는 이번에 프로젝트를 진행하면서 처음 알게된 태그들이다. css 그런데 생각 외로, css로 화면을 구성하는 것에서 시간이 꽤 오래 걸렸다. body 전체를 하나의 flexbox 로 묶은 후에 각 요소들을 디자인 해주었는데, body의 display를 flex로 하면 다른 요소들의 디자인이 적용이 되지 않았다. flex 로 묶은 이 컨테이너를 justiy-content: center 로 하면 ... Read More
-
Baekjoon 13164. 행복 유치원
문제 접근 방법 이 문제는 어떻게 해결하는 것이 좋을까요? 제가 문제에 접근한 방법은 이렇습니다: -입력 값들을 저장한 벡터를 nums라 합니다. -각 원소들의 차이를 저장한 벡터를 gaps라 합니다. 우리가 찾고자 하는 값은, 가장 큰 키에서 가장 작은 키를 뺀 값에서 gaps 중 큰 순서대로 K-1 개의 원소를 모두 더한 값을 빼준 것과 같습니다. 따라서 그 식은 result = (nums[N-1] - nums[0]) - gap 로 나타낼 수 있습니다. 여기서 gap은, gaps의 값들 중에서 가장 큰 K-1개의 원소들을 골라 모두 더한 값입니다. 코드 #include <iostream... Read More