daily1313의 등록된 링크

키자드에 등록된 총 182개의 포스트를 확인하실 수 있습니다.

Tistory

일본여행 2023.01.02 4일차 일본 하라주쿠(harajuku), 도쿄 텔레포트(Tokyo Teleport) -> 오다이바

오늘은 일어나자마자 재윤(대학교 5년 지기 친구)이랑 하라주쿠로 이동해서 하라주쿠 쇼핑거리를 둘러봤습니다. 태민이라는 친구는 아쉽게도 쇼핑을 싫어해서 따로 놀기로 했습니다. 저랑 재윤이는 어제부터 스투시, 슈프림, 빔즈 등 다양한 브랜드몰을 둘러보기로 얘기한 상태라서 10시쯤 일어나 천천히 준비하고 나갔습니다. 우선 배가 너무 고픈 상태라서, 사전에 먹기로 한 레드락이라는 스테이크 덮밥집을 찾았습니다. 긴 말 필요 없습니다. 무조건 드셔보세요. 간도 진짜 너무 잘 배어있고, 밥도 너무 맛있었습니다. 간단하게 와인이랑 먹었는데 친구도 맛있다고 했습니다 ! 다시 일본에 온다면 꼭 재방문하고 싶은 가게였습니다. 식사를 마치고, 바로 옆에 일본 유명 브랜드 옷 및 잡화점인 빔즈를 찾았습니다. 진짜 그냥 다 사고..

Tistory

일본여행 2023.01.03 5일차 도쿄(Tokyo), 나리타(narita) 공항 -> 인천 공항 돌아오는 과정

이제 돌아갈 시간이네요 .. 어제는 경황이 없어 글을 쓰지 못했어서 오늘이라도 마무리 느낌으로 작성해보려고 합니다. 뒤편으로 이동하면, 숙소가 있습니다. 이제 다시 못 본다니 살짝 아쉽네요 !! 저기 계단에서 친구들과 사진도 찍었고, 세븐일레븐 편의점에서 다양한 먹을거리와 술도 먹었습니다 ! 체크아웃이 오전 10시였는데, 친구들과 저는 7시 반에 알람을 맞췄는데 전부 다 9시 넘어서 일어나서 급하게 나왔습니다. 친구들이 너무 게을러 결국 제가 먼저 씻었네요 ... ㅠㅠ 그래도 20분 정도 여유를 두고 나왔습니다. 개인적으로 도토루 커피보다, 여기 커피가 더욱 맛있었던 것 같습니다. 그리고 샐러드도 정말 맛있었고, 빵 굽기마저 완벽해서 아침을 브런치로 만족스럽게 해결할 수 있었습니다. 태민이는 지하철 카드..

Tistory

[Spring] Spring Security + JWT를 이용한 토큰 발급 및 회원가입, 로그인 로직 구현

JWT란 무엇인가 ? RFC 7519 웹 표준으로 지정되어 있고, JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Json Web Token이다. 헤비 하지 않고, 아주 간편하고 쉽게 적용할 수 있어서 사이드 프로젝트를 진행할 때 매우 유용한 방식이다. 몇 가지 고려사항만 잘 대응하면, 대규모 프로젝트에도 충분히 이용 가능한 방식이다. JWT 구성요소 Header : Signature를 해싱하기 위한 알고리즘 정보들이 담겨있음. Payload : 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들을 담고 있다. Signature : 토큰이 유효성 검증을 위한 문자열, 이 토큰이 유효한 토큰인지 확인 가능. JWT 장점 - 중앙의 인증서버, 데이터 스토어에 대한 의존성 ..

Tistory

2022 12월 회고록

우여곡절 끝에 2022년이 지나갔네요. 이번에 방향성 잡고 친구들과 정말 열심히 공부했는데, 눈 깜짝할 사이에 1년이 지나갔다는게 안 믿기네요. 아무래도 시기가 시기인지라 신경 써야 할 부분이 한두 개가 아닌 것 같습니다. 이번에 우테코 붙은 친구를 통해 고려해야 할 부분이 생겼습니다. 항상 머릿속에는 마음에 담아두고 있지만, 실천은 하지 못했던 요소입니다. 코드를 작성할 때 클린 코드를 항상 머릿속에 담아두고, 가독성 있는 코드를 작성하기 위해 힘써야 할 것 같습니다. 그리고, 4학년 때 졸업 작품을 만들기 위해 백엔드적 역량을 더 길러야 할 것 같습니다. 저의 역량을 드러낼 수 있는 실속 있는 개인 프로젝트도 만들어보고 같이 공부하는 친구와 함께 서로 피드백해주고 자극을 주면서 발전해 나가도록 노력해..

Tistory

일본 여행 2022.12.30 1일차 신주쿠(Shinjuku), 타카다노바바(Takadanobaba)

현재 일본에서 친구들과 함께 추억을 쌓고 있습니다. 그래서 즉석으로 저의 생각을 기록하기 위해 포스팅하려고 합니다.(사실 나중 가면 귀찮아서 안 할까 봐 작성..) 저희는 오늘 아침 7시 50분 비행기를 타기 위해 새벽 4시 30분에 일어나서 준비하고 5시에 청라에서 나와서 인천공항으로 갔습니다. 정말 아침부터 너무 힘들었습니다. 5시 50분쯤 도착했는데, 사람들이 너무 많았고 줄도 엄청 길었습니다. (해외여행 처음 가시는 분들은 참고하시면 좋습니다. (최소 1시간 반 ~ 2시간 전에는 공항에 도착해야 안전하게 비행기를 탈 수 있습니다.)). 일본 입국 절차가 정말 까다로워서 힘들었습니다. 백신접종증명서, 영문확인서(백신 3차 안 맞은 사람만 해당), 여권, 민증은 필수로 챙겨야 합니다.! 우여곡절 끝에..

Tistory

일본여행 2022.12.31 2일차 우에노(Ueno), 긴자(Ginza), 신오쿠보

오늘은 숙소에서 일어나자마자 우에노역에서 식사 후 공원에서 산책을 하였습니다. 거리를 서성이다 보니 약간 시장도 있으면서 술집, 밥집도 찾기 쉬워서 정말 좋았습니다. 다시 봐도 건물이 정교한게 너무 이쁘네요. 주변에 쓰레기 하나 없고 깔끔해서 보기 좋았던 것 같습니다.! 생각보다 너무 맛있었습니다. 신선하고 가격도 되게 괜찮았던 것 같습니다. 웨이팅은 3-40분 정도 기다렸던 것 같습니다. 기다린 보람이 정말 있었던 식당인 것 같습니다. 초밥마다 가격이 가지각색인데, 비싼 것도 먹고 저렴한 것도 골고루 먹었습니다. 정말 회전 초밥 집에서 이렇게 배 터지게 먹은 적이 처음이었습니다. 무엇보다 튀김류가 맛있었습니다. 하나도 안 느끼하고 담백한 맛이 느껴졌습니다. 웨이팅 기다리면서 순번표를 받기에, 시간이 남..

Tistory

일본여행 2023.01.01 3일차 시부야(Shibuya), 하라주쿠(Harajuku)

이제 3일 차에 다다랐는데요,, 전날 친구들과 과음을 해 늦잠을 자고 일어나서 시부야역으로 이동했습니다. 원래 계획은 시부야에 돈가스 맛집을 가려고 했습니다. 그런데, 1월 1일이라서 그런지 쉬는 가게가 너무 많았고 알아본 가게도 문 닫았습니다 ㅠㅠ 그래서 우선적으로 배를 채우기 위해 사람들이 줄 서 있는 타코야끼 집으로 이동했습니다. 최근 먹은 음식 중에서 가장 뜨거웠습니다. 맛은 나쁘지 않았지만, 느끼한 감이 없지 않았습니다. 전반적으로 일본 음식의 간이 좀 쎈편인 것 같다는 생각이 들었습니다.(개인 견해) 그 와중에 맥날 햄버거도 짰습니다. 진짜 온몸이 소금으로 버무려지는거 같다는 생각이 들었습니다... 그래도 음료수가 있었기에 느끼함을 없애주었고 맛있게 먹었던 것 같습니다 ! 햄버거를 다 먹고 시..

Tistory

[week1-1] 클라우드 컴퓨팅, AWS API Gateway, AWS S3, AWS ELB, AWS CloudFront, AWS Secret Manager, 스냅샷

VPN / VPC VPC : 자체 데이터 센터에서 운영하는 기존 네트워크와 아주 유사한 가상 네트워크입니다. VPC를 생성한 후 서브넷(프라이빗, 퍼블릭)을 추가할 수 있습니다. 프라이빗 서브넷 : 주로 외부에서 접근할 수 없는 네트워크이다. NAT Gateway를 이용하면 내부에서 외부로 접근 가능하다. 퍼블릭 서브넷 : 외부와의 자유로운 통신이 가능한 네트워크이다. VPN : VPC에 들어가기 위한 연결장치, 회사망을 들어갈 때 VPN을 이용한다. 회사 내부 VPC망에 들어가기 위한 수단. AWS API Gateway -어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지관리, 모니터링 및 보안 유지할 수 있는 완전관리형 서비스이다. -서버의 대문같은 역할 -트래픽 관리, CORS 지원, 권한..

Tistory

[week1-2] AWS EC2, Elastic Beanstalk, ECS, Fargate, Lambda

AWS EC2 Amazon Elastic Cloud Compute 가장 기본적인 형태의 클라우드 컴퓨팅(= 클라우드 컴퓨터 한 대) 온디맨드(On-demand) - 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 Amazon EC2를 사용하기 원하는 사용자 스팟 인스턴스(spot-instance) :온디맨드에 비해 7~90% 가격으로 EC2 인스턴스를 이용할 수 있게 해주는 기능을 말한다. 시작 및 종료 시간이 자유로운 애플리케이션 Saving Plans : 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fergate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금 AWS Elastic Beanstalk(EB) AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있는 서비스..

Tistory

[week2-1] AWS SQS, MSK, Kinesis, RDS, DynamoDB, ElastiCache

현업에서 굉장히 많이 사용하는 메세지 큐에 대한 지식들과 DB Service 관련 지식들을 배웠습니다. 현재 수 많은 기업들이 메세지 큐를 사용하고 있고, 메세지 큐를 왜 사용하는지에 대해서 알게 되었습니다. 우선적으로 메세지 큐가 무엇인지 말씀 드리겠습니다. 메세지 큐(Message Queue)란 ? 메세지 큐(Message Queue)란 프로세스 간에 데이터를 교환할 때 사용되는 통신 방법 중에 하나이다. 더 큰 개념으로는 MOM(Message Oriented Middleware: 메세지 지향 미들웨어)를 의미한다. MOM이란 비동기 메세지를 사용하는 프로그램 간 데이터 송수신을 의미하며, MOM을 구현한 서비스를 MQ라고 한다. RDS AWS RDS (Amazon Relational Database..

Tistory

Git-flow를 활용한 협업 방식

이번 Umc 3기에서, 프론트엔드(Android, IOS) 학우들과 함께 협업을 하기 위해서 Git-flow를 이용해 팀프로젝트를 꾸려 나갈 것 같습니다. 우선, Git-flow를 왜 사용하는지와 구성요소, 그리고 기존 Git과의 차이점과 사용하였을 때의 장점들을 설명드리려고 합니다. Git-flow를 사용한 Branch 전략 Git-flow란 무엇인가 ? branch를 어떻게 운영할 것인지에 대한 유용한 사례 이러한 사례를 쉽게 실수없이 운영할 수 있게 도와주는 프로그램 으로 볼 수 있습니다. 현재 Git으로 개발할 때, 표준으로 사용되고 있는 방법론이라고도 볼 수 있습니다. Git-flow에는 5가지의 branch가 존재합니다. master : 제품으로 출시될 수 있는 branch, 제품을 배포하는 ..

Tistory

일본 입국 시 주의사항(백신접종 증명서 + 영문 확인서) 및 필수품

이번 2022년에는 정말 힘들었고, 그만큼 얻어가는 것도 많은 한 해였습니다. 그래서 대학교에서 가장 친한 친구 2명(태민, 재윤)과 해외여행을 가려고 합니다. 2019년도 제가 군대에 있을 때, 자기들끼리 다낭 간 게 마음에 걸렸나 봅니다. 계속 저보고 해외여행 꼭 가자고 해서 이번에 일본 여행을 가려고 다짐했습니다. 일본 여행을 가기 위해 숙지해야 할 부분이 여러 개 있습니다. Visit Japan Web(일본 입국하기 위해 필수 !!) -> 링크(https://www.vjw.digital.go.jp/main/#/vjwplo001) 숙소 바우처, 일본 항공권 발급 여권, 민증(주민등록증) 유심(일본에서 기존 카카오톡 친구되어 있는 사람들과 연락하기 위해 필수!!) 충전기, 상비약, 동전지갑(동전지갑은..

Tistory

[Spring] Rest vs RestAPI

Rest란 무엇인가? Representational State Transfer라는 용어의 약자이다. 자원을 URI로 표시하고 현재 자원에 대한 상태를 주고 받는 것이다. 클라이언트는 HTTP URI를 통해서 자원을 구별하고, URI를 통해 서버에 요청을 보낸다. 클라이언트와 서버간의 통신 방식 중 하나이다. REST의 구성 요소 : 자원(Resource), 행위 : HTTP METHOD(GET, POST, UPDATE, DELETE) 표현으로 이루어져있다. 표현(verb) 다음과 같이 클라이언트는 서버측에 요청을 보낼때, HTTP URI를 통해 자원을 구별한다. @PostMapping("/users/{userId}/boards") 그러면 Restful은 무엇일까? Rest와 동일하지만, 기존 Rest보다..

Tistory

2022 11월 회고록

살아생전 회고록을 작성해본 적은 한 번도 없었던 거 같다. 어렸을 때 일기마저 쓰는 것을 싫어했었다. 하지만 중구난방한 머릿속을 정리하기 위해서 무조건 써야겠다는 생각이 들었다. 내가 뻗쳐나가고 있는 방향성이 올바른지, 나의 부족한 부분이 어떤 건지, 그리고 어떤 방향으로 보완하는 게 좋을지 생각해볼 필요성을 느꼈다. 그래서 회고록을 작성해보려고 한다. 대학원 세미나 발표 내가 이번학기 가장 마음에 걸리고 힘들었던 스케줄 중 하나는 대학원 세미나 발표자료를 만들고, 교수진과 박사분 및 대학원생분들에게 피드백을 받는 것이었다. 이런 공적인 자리에서의 발표는 처음이라서 너무 떨렸다. 위에 자료들은 발표 자료의 일부이다. 발표를 하기 전 마음 가짐이 "내가 발표를 하는 영역에 있어서는 깊이 있게 알고 있어야 ..

Tistory

Blocking & Non-Blocking, Synchronous & Asynchronous

블로킹 blocking -> 어떠한 A 함수 가 B 함수를 호출하면 제어권(함수를 실행할 권리)을 A가 B에게 넘겨주는 작업 방식이다. 제어권을 가진 B는 함수를 실행하고, A는 제어권을 B에게 넘겨줬기 때문에 함수 실행을 멈춘다. 그리고 B의 함수가 종료되면, A에게 다시 제어권을 돌려준다. 논블로킹 Non-blocking -> 어떠한 A 함수가 B 함수를 호출해도 제어권을 그대로 자신이 가지고 있는 작업 방식이다. A 함수가 B 함수를 호출해도, 제어권은 A에게 있기 때문에, A의 함수를 멈추지 않고 B의 함수를 실행한다. 데이터를 처리하는 방식 동기 synchronous programming -> 요청과 결과가 동시에 일어나는 프로그래밍(A, B 노드 사이의 작업 처리 단위를 동시에 맞춤) 결과를 ..

Tistory

Springboot templates 폴더 구조(JDBC 기반)

dto(data transfer object) : 계층 간 데이터 교환을 위한 객체(getter/setter 메서드만 가지고, setter를 제거하고 생성자에서 데이터를 받아 필드에 할당해주면, 전달과정에서 데이터의 위,변조를 막을 수 있게 해준다) Router Client의 Restful API 요청(HTTP method(PUT, POST, PATCH, DELETE, GET), 주소(URI))을 Controller에게 전달 한다. Controller API 요청을 전달받은 Controller는 Path-variable, query-string, body들을 요청에 맞게 Provider, Service에 전달한다.(파라미터를 통해 전달) Service, Provider에게 전달받은 데이터(가공된 값)들을..

Tistory

CS 스터디 4주차 Network & Spring

최근 2~3주 동안 시험기간이라서 CS에 집중하지 못했습니다. 이제 다시 커리큘럼에 맞춰 또 집중해야 할 것 같습니다. 4주차 내용은 다음과 같습니다. 4주차 학습 내용 Network 대칭키 / 공개키 HTTP / HTTPS 로드 밸런싱 Blocking, Non-blocking / Synchronous, Asynchronous Blocking / Non-Blocking I/O Spring Bean Scope MVC Framework Spring Boot, SpringApplication 대칭키 / 공개키 대칭키(Symmetric key) / 공개키(Public Key, Asymmetric Key) 대칭키는 보내는 사람의 key와 받는 사람의 key가 동일하다. 속도 측면에서는 빠르지만, 안정성이 떨어진다..

Tistory

[Spring] Bean Scope, MVC Framework, SpringApplication(Spring Boot)

Spring Bean이란? Spring에서 POJO(plain, old java object)를 "Bean"이라고 부른다 Beans는 애플리케이션의 핵심을 이루는 객체이며, Spring IoC 컨테이션에 의해 인스턴스화, 관리, 생성 된다. 컨테이너에 공급하는 XML파일에 의해 생성된다. 애플리케이션의 객체가 지정되면 getBean()메서드를 통해 가져올 수 있다. Bean Scope 이 중에 request, session, globalsession은 Spring Mvc Web Application에서만 적용된다. default값은 singleton이다. MVC Framework Spring MVC Framework의 구성요소 DispatcherServlet : 제일 앞단에서 HTTP Request를 처..

Tistory

[Java] HashMap, HashSet 개념정리

HashMap은 Map의 종류 중 하나인데, key값과 value 쌍으로 이루어진 데이터를 저장한다. Map과 HashMap의 차이는 map은 red-blcak-tree 알고리즘을 사용하고, Hashmap은 Hashtable을 이용해 key-value를 유지한다. key값은 중복이 불가능하지만, value값은 중복이 가능하다. 선언방법 HashMap 변수이름 = new Hashmap(); HashMap 메서드 정리 1. put(key, value) => key, value값 저장, 중복된 key에 대한 value는 마지막에 저장된 value값으로 update 2. putAll(Object) => 인자로 전달된 Map에 대한 모든 데이터를 저장한다. 3. get(Object key) => key에 해당하는..

Tistory

우아한테크코스 1주차 회고록

정말 저에게는 고난과 시련과 같았습니다. 그렇지만 얻어가는 건 정말 많았다고 생각합니다. Spring만 했었지, Java로 알고리즘 구현을 해본 적이 아예 없었습니다. 그래서 그런지 머릿속으로 어떻게 풀어야 될지는 생각이 되지만, 코드 구현을 어떻게 해야 되는지 고민을 많이 했습니다. 더불어 사용해야 할 컬렉션, 내장 함수 등에 대한 구글링을 엄청 많이 했던 것 같습니다. 1번 문제는 A,B의 값에 대한 정보가 주어지는데, A, B 각각 한 숫자씩 쪼갠 것의 합과 곱이 더 큰 것을 찾아 누가 더 큰지 푸는 문제였습니다. 우선적으로 우테코는 기능 단위 구현(메서드 하나당 하나의 기능만을 추구), 다양한 예외처리, indent(블록) 2 이하를 추구한다고 널리 알려져 있기에, 이에 맞춰서 코드를 짜려고 많이..

Tistory

[Spring] MVC Pattern

MVC Pattern이 무엇이고 왜 생겨났을까?? MVC 패턴은 간략하게 설명하면, 유지보수가 편해지는 코드 구성 방식이다. 사용하는 이유는 도메인이나, 각종 구성요소들의 재사용을 할 수 있음(중복 코딩 방지)과 더불어 확장성이 매우 증가하였다. 더불어 Model, View, Controller로 요소를 나누었고, 이를 구분하기에 각 요소들이 스스로의 기능에 집중할 수 있고 분업화할 수 있다.. 어떠한 어플리케이션이 있을 때, MVC 패턴을 사용하지 않고 구현하였다면 전반적인 코드를 싹 다 고쳐야 한다. 하지만, MVC 패턴으로 구현하였으면 잘못된 컴포넌트의 기능만 찾아 이를 리팩토링하면 손쉽게 해결할 수 있다. 이를 통해 유지 보수가 편해질 수 있게 된다. MVC 패턴 동작 과정 1. 클라이언트가 필요..

Tistory

백준 1526 가장 큰 금민수(c++)

https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include using namespace std; int main() { string str; cin>>str; int max = -1; for(int i=4;i

Tistory

백준 2503 숫자 야구(c++)

https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net #include #include #include #include #include #include using namespace std; int result = 0; bool num[1000]; bool sameandzerocheck(string s) { if(s[0]==s[1] || (s[0]==s[2]) || (s[1]==s[2])) { return false; } else if( s[0] =='..

Tistory

우아한테크코스 프리코스 하기 전 마음가짐

정말 기대가 많이 되면서도 이에 더해 걱정도 만만치 않습니다. 친구들과 함께 주기적으로 자소서 첨삭을 받고, 계속해서 고쳐나갔습니다. 제가 우아한테크코스에 지원하게 된 결정적인 계기는 "배움" 입니다. 단계적인 프로그래밍 및 다양한 서비스 로직 구현과 코드 리뷰를 동시에 받을 수 있기 때문입니다. 예전 기수까지는 프리코스 과정을 하기 위해선, 코딩 테스트를 통과해야만 했습니다. 하지만, 이번 5기부터는 자소서만 제출하면 프리코스 과정을 밟을 수 있다고 나와있습니다. 정말 4주간의 긴 경험이 헛되지 않게 열심히 해보려고 합니다. 진짜 배울 점도 많을 것 같고, 스스로 노력해야 할 부분도 많을 것 같아 기대가 매우 됩니다. 또한 우아한테크코스에서 저의 코딩 능력도 향상될 것이라고 생각합니다. 저는 과제를 할..

Tistory

CS스터디 3주차 Network & Java

3주차 학습내용 Network OSI 7 계층 TCP 3 way handshake & 4way handshake TCP/IP 흐름제어 & 혼잡제어 UDP Java Error & Exception Stream API Record OSI 7계층 OSI란 무엇인가? 모든 종류의 컴퓨터 시스템 간 통신을 가능하게 하는 네트워크 설계를 위한 구조이다. Open System Interconnection(개방형 시스템 간 상호 접속) 1 계층 : 물리 계층(Physical layer) 물리적인 매체를 통하여 비트 전달(기계적, 전자적, 절차적 규격 제공) 데이터의 단위는 Bit이고, 장치로는 랜카드, 케이블, 커넥터, 전기신호 등이 있다. 2 계층 : 데이터링크 계층(Data-Link Layer) 투 포인트(poin..

Tistory

백준 2851 슈퍼 마리오(c++)

https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net #include #include #include using namespace std; int main() { int score; int time = 10; int sum = 0; vectorv; while(time--) { cin>>score; v.push_back(score); } for(int i=0;i=100) { if(sum - 100

Tistory

서브 도메인(sub domain), 리디렉션(redirection) 개념정리 및 적용

서브 도메인이란 무엇인가 ? 서브 도메인을 이해하기 위해 도메인에 대해 먼저 이해해야 한다. 인터넷 상에서의 주소는 IP주소이고, 이 IP주소는 사람이 외울 수 없으므로 사람이 이해하기 쉽게 만든 주소를 "도메인 주소"라고 한다. 서브 도메인은 도메인을 보조하기 위한 도메인이다. 이를 통해 하나의 도메인에 대한 다양한 서비스가 가능해진다. ex) blog.naver.com (네이버 블로그), cafe.naver.com(네이버 카페) 서브 도메인을 적용시키기 위해서, 가비아(도메인 구매 사이트)에서의 DNS 설정이 필요하다. 그냥 도메인을 적용시키기 위해선 타입을 A로 설정해주었지만, 여기에서는 CNAME으로 적용시켜주고, 호스트에는 도메인 name을 적용시켜준다. cd (/var/www/html == n..

Tistory

백준 2003 수들의 합2(c++)

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net #include #include #include using namespace std; int main() { int n,m; cin>>n>>m; vectorv; int cnt = 0; for(int i=0;i>num; v.push_back(num); } int sum =0; int start = 0; int end = 0; while(1) { if(sum>..

Tistory

AWS RDS 구축 및 인코딩, 타임존 적용하기

Amazon RDS란 무엇일까 ? Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스입니다. 이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리합니다. RDS 구축 템플릿은 무조건 프리티어로 선택해야 한다. 그렇지 않으면 예기치 못한 추가요금이 발생하게 된다. +식별자 생성 및 master 계정에 대한 암호를 설정해준다. VPC 보안 그룹 생성 추가 구성에서 DB의 이름을 정해줘야한다. 그렇지 않으면 RDS에서 데이터베이스가 생성되지 않는다. DB 생성 -> DB 식별자 클릭 -> 보안 그룹 보안 그..

Tistory

백준 2303 숫자 게임(c++)

https://www.acmicpc.net/problem/2303 2303번: 숫자 게임 N명이 모여 숫자 게임을 하고자 한다. 각 사람에게는 1부터 10사이의 수가 적혀진 다섯 장의 카드가 주어진다. 그 중 세 장의 카드를 골라 합을 구한 후 일의 자리 수가 가장 큰 사람이 게임을 이 www.acmicpc.net #include #include #include #include #include using namespace std; int idx = 1; bool cmp(pair&p1, pair&p2) { if(p1.first==p2.first) return p1.second > p2.second; else return p1.first > p2.first; } int main() { int n; vecto..

Tistory

[메타코딩] cron 주기적 실행

프로젝트 배포 - 시간설정(다양한 지역 및 나라 선택 가능) -부하, 에러(서버가 종료) 서버가 종료됐따는 로그를 남기지만, 자동 재시작이 되지 않는다. 1. cron의 개념과 실습 -주기적 실행 명령어 2.cron을 이용해서 종료된 스프링 서버를 재시작 crontab -e 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7) * * * * * ls -l>>cron.log crontab -l 1>crontab_new => 기존에 있는 crontab 파일을 crontab_new로 옮긴다. Daemon -> 죽지 않는 프로세스 스크립트 실행시 crontab에 자동 등록되게 하고 싶음 crontab -l(crontab -e에 있는 내용들을 출력해준다.) crontab_new 파일에 옮긴다...

Tistory

Docker

docker란 무엇인가? Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. AWS에서 Docker를 실행하면 개발자와 관리자가 어떠한 규모에서든 매우 안정적이며 저렴한 방식으로 애플리케이션을 구축, 제공 및 실행할 수 있습니다. https://aws.amazon.com/ko/docker/ Docker란 무엇입니까? | AWS..

Tistory

백준 1173 운동(c++)

https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net #include #include using namespace std; int main() { int N, start_m, max_M, T, R; // 운동하는 시간, 초기 맥박, 최대 맥박, 추가된 맥박, 감소된 맥박 cin>>N>>start_m>>max_M>>T>>R; int min = start_m; if(max_M-start_m

Tistory

백준 2204 도비의 난독증 테스트(c++)

https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 www.acmicpc.net #include #include #include #include using namespace std; int main() { int n; while(1) { cin>>n; if(!n) break; vectorv; vectorv2; for(int i=0;i>s; v.push_back(make_pair(s,i)); for(int i=0;i

Tistory

[메타코딩 21강] AWS 내용정리(리눅스 명령어 chown)

sudo chmod 664 text2.txt => root 그룹에 대해 쓰기 권한 부여 sudo chown root:ubuntu text2.txt => root 그룹에 대한 권한을 ubuntu 그룹에 대한 권한으로 변경하기 위함 =>이러한 명령어를 통해 ubuntu 그룹은 파일 쓰기에 대한 권한이 생기게 된다. https://www.youtube.com/watch?v=5fyu62jADiA&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=21

Tistory

[메타코딩 22강] AWS 내용정리(리눅스 명령어 find)

파일 찾기 명령어 find sudo find /(최상위) -name(이름으로 찾기) tomcat : tomcat 이름을 가진 파일을 찾아준다. sudo find /(최상위) -name(이름으로 찾기) tomcat* : tomcat 이름과 관련된 모든 파일을 찾아준다. r=소유자, g=그룹 o=그 외 사용자 기존 chmod 명령어 뒤에 숫자(777, 664 등)가 들어왔지만, chmod r+x,g+wx,o+rw 파일명과 같이 문자로도 권한을 적용시킬 수 있다.

Tistory

[메타코딩 23강] AWS 내용정리(리눅스 명령어 표준입출력)

tomcat의 로그를 보여주는 파일 sudo tail -f catalina.out : 실시간으로 파일의 끝 줄을 보여주게 된다. 새로운 터미널 창을 열어서 sudo service tomcat8 restart 를 입력해준다. 실시간으로 기존 터미널에서의 tail의 끝부분(출력 10줄)이 변화한 것을 확인할 수 있다. (모니터링 할 때 주로 사용) 표준 입력 스트림 : stdin(0) 표준 출력 스트림 : stdout(1) 표준 에러 스트림 : stderr(2) >(표준 입출력을 변경하는 방법) 표준 출력의 방향을 catalina.out -> mylog.out 으로 변경하기 표준 출력이 catalina.out에서 mylog.out으로 변경되었음을 확인할 수 있다. https://www.youtube.com/..

Tistory

[메타코딩 24강] AWS 내용정리(배포v1 흐름 이해하기)

배포 (로컬 컴퓨터에서 만든 프로젝트를 운영 컴퓨터로 이동하는 것) 스프링 부트 (이해 x) Github 업로드 환경 셋팅(JDK 설치) 실행 방향성 : 1. 로컬 컴퓨터에서 만든 프로젝트를 => GitHub에 업로드 2. EC2 운영 컴퓨터에서 다운로드 https://www.youtube.com/watch?v=2HAhVquHCXU&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=24

Tistory

[메타코딩 25~39강] AWS 내용정리(배포)

고정 IP(엘라스틱 IP) 5군데에서 IP를 5개 제공 하지 않는다. 가격이 비쌈 이유 : 모든 집에서 동시적으로 인터넷을 사용하지 않기 때문이다. 유동 IP (가정집에서 사용) 우리가 사용하는 AWS에서 사용하는 IP는 유동 IP이다 이를 탄력적 IP로 변환해야 한다. 주의 해야 할 점 : 탄력적 IP => 15.164.69.11(프리티어 사용자에게 무료 탄력적 IP를 제공해준다.) 조건 : EC2 - 탄력적 IP를 연결해줘야 한다. 탄력적 IP 생성만 하고 EC2 서버를 연결하지 않았을 경우 탄력적 IP를 2개를 만들 수 없다. EC2 서버 종료(시점부터 비용발생, 탄력적 IP가 놀고 있기 때문이다.) 배포 순서 github 다운 => git clone 주소 gradlew 실행권한주기 => cd ~/..

Tistory

[메타코딩 17강] AWS 내용정리(리눅스 명령어 프로세스 이해)

프로세스 이해 CPU(연산장치) RAM(저장장치, 휘발성, 1G Byte) =>용량이 부족해서 한계가 있다. HDD, SDD(30G Byte) =>Tomcat8(100mB) 설치 후 실행에 필요한 부분(핵심 기능들)만 RAM에 끌어올린다(Load) =>이러한 과정은 프로세스라고 한다. 이러한 과정을 통해 CPU와 RAM과 소통을 할 수 있게 된다. CPU 1개 - 노동자 1명 - 프로세스 1개(Tomcat8(서버-데몬(계속 실행중)) =>노동자 1명이 Thread(실, 수명..)을 만들어준다. =>Thread를 통해 Context-switching(문맥-교환)을 할 수 있게 된다. =>Thread를 통해 여러 가지 작업을 동시에 수행할 수 있게 된다. https://www.youtube.com/watch..

Tistory

[메타코딩 18강] AWS 내용정리(리눅스 명령어 프로세스 실습)

apt 명령어 설치 - 서비스 등록 => 실행파일을 직접 찾아서 실행할 필요가 없다. service --status-all =>서비스의 목록들을 확인할수 있다.((+) 실행중, (-) 실행중 아님)) systemcti 서비스 제어 명령 sudo systemctl list-unit-files => 실행중인 서비스 목록이 모두 나온다. sudo systemctl list-unit-files | grep tomcat8 => tomcat8에 대한 서비스 목록을 확인할 수 있다. sudo systemctl status tomcat8=> tomcat8의 상태확인(실행중인지 아닌지에 대한 여부 확인 가능) sudo systemctl start tomcat8 => 실행중인 프로세스 실행 sudo systemctl st..

Tistory

[메타코딩 19강] AWS 내용정리(리눅스 명령어 vi 에디터 사용법)

3가지 모드 일반 모드 명령행 모드 입력 모드 일반 모드 : 진입 방법 esc -> 커서 이동, 찾기, 블록 지정, 복사, 붙여넣기, 잘라내기 명령행 모드 : 진입 방법 esc -> 저장 종료 입력 모드 : 진입 방법 a or i -> 코드 수정 단축키 배우기 명령행 모드 w: 저장 q : 종료 q! : 강제 에디터 종료 wq : 저장 후 종료 일반 모드 마우스 우클릭 외부 코드 붙여넣기 shift + v : 블록 지정 dd : 현재 행 삭제 yy : 현재 행 복사 p : 붙여 넣기 u : undo 기능 ctrl + b : 위로 한 화면 스크롤 ctrl + r : 아래로 한 화면 스크롤 https://www.youtube.com/watch?v=4byGopUAKkg&list=PL93mKxaRDidFjQjP..

Tistory

[메타코딩 20강] AWS 내용정리(리눅스 명령어 chmod)

-(파일)rw-(root의 권한) r--(root 그룹 권한) r--(anyone) 1 root(소유자) root(그룹) d(폴더) 소유자의 권한 root 그룹 권한 anyone 권한 1. 읽기(r) r : 4 r : 4 r : 4 2. 쓰기(w) w : 2 - : 0 w : 0 3. 실행(x) - : 0 - : 0 - : 0 6 4 4 권한 사용자에게 쓰기 권한 주기 sudo chmod 646 text1.txt root, root그룹, 사용자에게 모든 권한 부여 sudo chmod 777 text1.txt

Tistory

포트포워딩[Port forwarding]

개인 컴퓨터 환경에서(Window or macOS) 포트포워딩을 통해 외부(4G, 5G 등)에서 접속하기 포트포워딩이란 ? 외부에 있는 PC가 내부에 있는 PC에 접근하기 위해 특정 포트를 개방해서 설정한 포트에 대해서만 접근을 허용하는 작업을 의미한다. https://itmanual.net/iptime-%EC%95%84%EC%9D%B4%ED%94%BC%ED%83%80%EC%9E%84-%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C%EB%94%A9-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95/ IPTIME 아이피타임 포트포워딩 설정 방법 2분내 끝내기 (+포트포워딩 기초 개념 정리) - IT 매뉴얼 #아이피타임 포트포워딩 #IPTIME 포트포워딩 #아이피타임 포트..

Tistory

[메타코딩 14강] AWS 내용정리(리눅스 명령어 apt 이해)

우분투(OS)(CLI, 그래픽 x) =====> 해당 사이트로 이동 wget으로 다운로드 => 압축풀기(tar) => .deb => 설치 명령어 각각의 사이트로 들어가서 다운로드 하기가 굉장히 번거롭다 우분투에서 A,B,C 소프트웨어를 다운로드하기 =>ubuntu repository에 A, B, C에 대한 프로그램)ex)http://hello.com이 담겨있다.(사이트 이동이 필요없음) 1. 우분투 레포지토리 접근 /etc/apt/source.list => 레포지토리 경로(http://hello.com) 등록 2. apt update => 레포지토리에 새로 생긴 프로그램들에 대한 목록을 갱신해준다. 3. apt install A프로그램 다운로드 자동설치 PPA 저장소 => 개인 저장소(새롭게 생긴 프로그..

Tistory

[메타코딩 15강] AWS 내용정리(리눅스 명령어 apt 실습)

리눅스 명령어 apt 실습 apt-cache search tomcat => apt 저장소 목록에 tomcat이 있는지 검색 apt-cache search tomcat | grep tomcat => tomcat을 찾아낸다 apt list | grep tomcat apt install tomcat9 sudo apt update (리눅스 - 최상위 관리자 root) (ubuntu) sudo apt install -y tomcat9 tomcat(웹 서버=> 포트 활성화) 포트가 어떻게 활성화되었는지 확인 sudo apt install net-tools netstat -nlpt(port number 조회) 인바운드 규칙 설정(어떤 포트에 대해서만 내 컴퓨터에 접속을 허용) Tomcat9이 설치되었는지 local에..

Tistory

CS스터디 2주차 Computer Architecture & Java

cs 스터디 2주차 내용 Computer Architecture 고정 소수점 / 부동 소수점 패리티 비트 / 해밍 코드 ARM 프로세서 Java 고유 락 문자열 클래스 Garbage Collection Primitive type & Reference type 고정 소수점, 부동 소수점 => 컴퓨터에서 실수를 표현할 수 있는 방법은 고정 소수점, 부동 소수점 2가지가 있다. 고정 소수점(Fixed Point) : 소수점이 찍힐 위치를 정해놓고 소수를 표현하는 방식(정수 + 소수) -0.1234는 부호(-), 정수부(0), 소수부(0.1234)가 필요하다. 장점 : 실수를 정수부, 소수부로 나타내어 단순하다. 단점 : 표현의 범위가 너무 적어서 활용하기 힘들다.(정수부는 15 bits, 소수부는 16 bit..

Tistory

[메타코딩 16강] AWS 내용정리(리눅스 명령어 ppt 저장소 사용)

sudo apt-cache search tomcat : 저장소 목록에 있는 tomcat의 목록을 보여준다. sudo apt remove tomcat9 : tomcat9 삭제(설정 파일을 지우지 않음) sudo apt --purge remove tomcat9 : tomcat9 삭제(설정 파일까지 모두 삭제) ppa 저장소 설치 https://launchpad.net/ubuntu/+ppas Personal Package Archives : Ubuntu Ubuntu also includes a wide variety of software through its network of software repositories. Once your system is installed you can simply call u..

Tistory

[메타코딩 9강] AWS 내용정리(EC2서버와 방화벽)

EC2 서버와 방화벽 EC2서버 - 인프라(운영체제, 톰켓, 자바) AWS 사이트 접속 -> 우분투 운영체제 선택 -> 컴퓨터 임대(우분투 운영체제 설치) 로컬 컴퓨터 -----------------원격 접속(IP주소 : 22(포트번호), 원격 Shell 명령(CLI 환경)이 가능하다.)------------> AWS에 존재하는 컴퓨터(방화벽 존재, 모든 포트 차단(0~65535) 방화벽에서는 인바운드 규칙을 설정해야한다.(외부에서 내부로 들어오기 위한 규칙 설정), 22번 포트번호를 개방해야한다. 22번 포트 : SSH(Secure(보안), Shell(쉘)) 원격으로 보내는 명령어가 외부에 노출되지 않기 위해 SSH를 사용한다. 암호화가 돼서 명령어가 전송된다. 쉘(Shell) : 사람이 OS에게 내리..

Tistory

[메타코딩 10강] AWS 내용정리(RSA 인증방식)

RSA 인증방식 A와 B에게 데이터(민감한 데이터 정보)를 전송할 때 중간에 있는 C가 데이터를 가로챌 수 있다. 이러한 민감한 데이터 정보를 암호화(K라는 열쇠를 통해 암호화) 해서 B에게 전송한다. B는 K라는 열쇠를 통해 복호화해서 데이터를 받게 된다. => 대칭키 암호화 방식(보내는 사람, 받는 사람의 열쇠가 동일) C는 K라는 열쇠에 대한 정보를 가질 수 있기 때문에, 보안에 대한 안전성이 떨어질 수 있다. RSA는 이를 보완하기 K를 2개를 가지게 된다 => 공개키 암호화 방식(RSA) 데이터를 암호화하기 위해서는 상대방의 공캐키로 잠그는 것이다. 데이터 전송 방법 데이터 받는 방법 1. 데이터를 수신자의 공개키(암호화)로 잠근다. 4. 데이터를 송신자의 공개키(서명)로 연다 2. 그 데이터를..

Tistory

[메타코딩 11강] AWS 내용정리(리눅스 명령어 1탄)

-SHELL -사용자-OS(우분투)-컴퓨터가 대화하기 위해서 필요한 언어 명령어 모음 clear : 화면을 깨끗하게 만들어준다. pwd : 현재 어느 경로에 있는지 확인 cd .. : 폴더 이동(한칸 위로 올라간다) / : ubuntu에서의 최상위 경로 cd 경로(절대경로 - 상대경로) : ls : 현재 폴더에 있는 파일과 파일의 상태를 보여준다. ls -l : 폴더에 있는 파일들의 상태를 상세하게 보여준다. 폴더와 파일 구분법 : 색칠이 있는 부분 => 폴더, 색칠이 없는 부분 => 파일 다음 파일의 왼쪽에 -가 있으면 파일, -가 없으면 폴더이다. https://www.youtube.com/watch?v=7wAudkkCedk&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&in..

Tistory

[메타코딩 12강] AWS 내용정리(리눅스 명령어 2탄)

명령어 2탄 ls --help : 모든 명령어의 사용법을 알려줌. ls -all : 모든파일(숨김파일(OS의 중요한 파일), 기본파일, 기본폴더)를 보여준다. mkdir : (폴더 생성) touch : (파일 생성) rm : (삭제) rm -r 폴더명 : (폴더 삭제) rm 파일명 : (파일 삭제) cmd + c (취소) https://www.youtube.com/watch?v=Yx84tMeksrs&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=12

Tistory

[메타코딩 13강] AWS 내용정리(리눅스 명령어 3탄)

cp : 파일 복사 mv : 파일 이동, 파일명 변경 ln -s(소프트 링크) - 바로가기 파일을 생성 bin 폴더 - 실행파일이 모여 있는 곳 mv 파일명 폴더명 : 해당 파일을 폴더에 이동 mv 파일명1 폴더명/파일명2 : 해당 파일명1의 이름을 파일명2의 이름으로 바꾸고 폴더에 이동 mv 파일명1 파일명2 : 해당 파일명1의 이름을 파일명2로 바꾼다. ln -s 파일명1 파일명2 : 해당 파일명1의 바로가기 파일 파일명2를 만들어준다. https://www.youtube.com/watch?v=DOzIhY7Lm9Y&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=13

Tistory

[메타코딩 3강] AWS 내용정리(AWS 탄생배경)

AWS 탄생배경 제프 베이조스 아마존 창립자 2021년 기준 세계 부자 순위 2위 프리스턴 대학 컴퓨터 공학과 졸업 뱅커스 트러스트 최연소 부사장(26세) 1994년 인터넷 서점 아마존 닷컴 창림(주변 지인에게 200만 달러 투자 받음) 종합 쇼핑몰로 변신 세일기간 = 블랙프라이데이 사용자 ↑ => 서버 ↑ AWS : 개인(off premise)이 클라우드 컴퓨터(laas) 를 빌려 쓰는 서비스를 전 세계적으로 갖고 있는 것

Tistory

[메타코딩 5강] AWS 내용정리(EC2서버 임대하기)

4강에서는 AWS 회원가입에 대한 전반적인 내용이 담겨있어서 넘어가겠습니다. EC2 서버 임대하기 1. 지역을 서울로 변경하고, EC2를 클릭한다.(EC2가 없다면, 검색기능 사용가능) 2. 인스턴스 시작 3. AMI를 Ubuntu Server 20.04로 설정한다. 4. 키 페어를 설정해야 하는데 임의의 빈 폴더를 만들고 키 파일을 다운로드 받아 생성한 폴더에 넣어준다. 인스턴스 시작을 눌러주면 끝이다. https://www.youtube.com/watch?v=TuBLXH17-k8&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=5

Tistory

[메타코딩 7강] AWS 내용정리(EC2서버 Mac에서 접속하기)

EC2 서버 Mac에서 접속하기 1. 퍼블릭 IPv4주소 복사 2. Mac Terminal에 들어가 다음과 같은 명령어를 적어준다. cd 키 페어 파일이 담겨있는 폴더 경로(파일을 드래그하면 경로를 찾아줌) ls=> 현재 위치 파일경로 ls -al => ls -a + ls -l(숨긴 파일의 디테일한 내용 + 권한) chmod 700 => 사용자에게만 읽기, 쓰기, 수정에 대한 권한 적용 (권한을 적용시키면 -rwx..와 같이 표기) ssh -i 파일경로 ubuntu@IP주소 => ubuntu로 ssh접속 허용(EC2 접속서버 접속) https://www.youtube.com/watch?v=7V2qrWJQHKY&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=8

Tistory

[메타코딩 8강] AWS 내용정리(IP주소, 패킷, 포트번호 이해하기)

IP주소(IP address), 패킷(Packet), 포트번호(Port number) 이해하기 서킷 스위칭 vs 패킷 스위칭 서킷 스위칭 : 선이 늘어나야 한다. 패킷 스위칭 : 선이 많이 필요없다(중간에 라우터가 관여) => 비용이 적게 든다. 많은 데이터를 동시에 데이터를 전송하기에, 데이터를 받는 쪽에서는 재조립이 필요하기에 패킷이 필요하다. 더불어 패킷 분할을 해야 한다. 많은 컴퓨터의 IP주소는 정수값으로 구분하며 유일한 값(0~42억)을 지닌다. =>IPv4 방식(0.0.0.0 ~ 255.255.255.255) =>IPv6 방식(사물인터넷, 더 많은 다양한 수많은 기기가 생겨나기 때문에 부족한 IP주소를 보완하기 위함) =>IPv5는 테스트(홀수)가 끝나면 IPv6(짝수)에서는 서비스를 실행한..

Tistory

백준 3135 라디오(c++)

https://www.acmicpc.net/problem/3135 3135번: 라디오 첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B < 1000, A ≠ B). 다음 줄엔 정수 N이 주어진다 (1 ≤ N ≤ 5). 다음 N개의 줄엔 미리 지정되어 있는 주파수가 주어진다 (주파수는 1000 보다 작다). www.acmicpc.net #include #include #include #include using namespace std; int main() { int a,b; int n; cin>>a>>b>>n; vectorv; for(int i=0;i>num; v.push_back(num); } sort(v.begin(),v.end()); vectorres; for(int i=0;i=abs(a-b)) {..

Tistory

백준 1018 체스판 다시 칠하기(c++)

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net #include #include #include #include using namespace std; int M, N; char board[51][51]; char wb[8][8] = { 'W','B','W','B','W','B','W','B', 'B','W','B','W','B','W','B','W', 'W','B','W','B','W','B','W','B', 'B','W','B','W'..

Tistory

cs 스터디 1주차 Computer Architecture & Java

1회차 공부할 내용 Computer Architecture 컴퓨터 구조 기초 컴퓨터의 구성 CPU 작동원리 캐시 메모리 Java 컴파일 과정 Java Virtual Machine Call By Value / Call By Reference Casting Auto Boxing / Auto Unboxing Thread 컴퓨터 구조 : 컴퓨터는 하드웨어, 소프트웨어, 펌웨어 3가지로 이루어져 있다. 하드웨어 : 손으로 만질 수 있는 형태가 있는 장치들 ex) 중앙처리장치(CPU)(연산장치, 제어장치), 기억장치(주기억장치(RAM,ROM), 보조기억장치(하드디스크, SSD, CD, USB 등), 입출력장치(프린트, 키보드, 마우스 등) CPU(Central Processing Unit) => 기억, 해석, 연산..

Tistory

[메타코딩 1강] AWS 내용정리(학습목표)

AWS의 학습목표 클라우드 서비스를 활용하기 위한 기본지식을 학습한다(AWS, Linux, Network) 클라우드 서비스에 내 프로젝트를 단순 배포하기 위한 환경 구축(EC2) Iass(인프라- 물리적 컴퓨터) 클라우드 서비스에 내 프로젝트를 배포를 간편하게 한다.(ShellScript) 클라우드 서비스에 환경 구축 없이 내 프로젝트를 배포한다(엘라스틱 빈 스톡) (플랫폼 - 물리적 컴퓨터(플랫폼)) 클라우드 서비스에 배포 자동화를 구축해본다 (GithubAction) 클라우드 서비스에 무중단 배포를 해본다.(로드밸런서) (롤링배포) 정적 IP 할당을 위해 Network Load Balancer를 활용한다. 프로젝트(Springboot, testcode) ===(push)===> Github ===(t..

Tistory

[메타코딩 2강] AWS 내용정리(전산실 구축시 고려사항)

전산실 구축시 고려사항 1.토지=> On Premise => Off Permise(내가 토지를 갖고있지 않다. 원격, 클라우드 시스템) 2.건물 3.하드웨어 장비 -서버, 침입 방지 차단시스템(IPS, IDS, 방화벽, 보안 ..), 로드 밸런서(L4), 각종 네트워크 장비 4.에어컨 - 반도체는 열에 민감하게 반응 5.전기 6.복잡한 케이블 정리 7.소방 시설, 이중화(한쪽에서 고장이나면 다른 한 쪽에서 보완하기 위함) 8.전산실 보안(인건비) https://www.youtube.com/watch?v=kurk5kozsy4&list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue&index=2

Tistory

프로그래머스 숫자의 표현(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int solution(int n) { int answer = 1; int end = n; while(n--) { int sum=0; if(!n) break; for(int i=n;i>=1;i--) { sum+=i; if(sum == end) { answer++; break; } else if(sum>end) { break; }..

Tistory

스프링 쇼핑몰 프로젝트 장바구니(cart) 기능 구현

오늘은 멘토 분과 함께 장바구니 기능을 구현해봤습니다. 우선적으로 생각해야 할 부분이 있습니다. Cart(장바구니)는 CartItem(장바구니에 있는 아이템 목록)을 따로 만들어줘야 합니다. 그 이유가 뭐냐면 DB의 속성과도 연관이 있습니다. DB는 각 테이블을 쪼개면 쪼갤수록 안전하기 때문입니다. 이렇게 구현하지 않으면 서비스 코드 엄청 길어지고 쿼리 조회도 비효율적입니다. 그래서 cart, cartItem을 따로 만들어주었습니다. Cart, CartItem Entity package com.example.shoppingmall.entity.cart; import com.example.shoppingmall.entity.common.EntityDate; import com.example.shopping..

Tistory

mac m1 Vscode clang 컴파일러 setting file 설정 및 github 연동

tasks.json, launch.json, c_cpp_properties.json의 파일 리팩토링이 필요하다. tasks.json { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "clang++ build active file", "command": "/usr/bin/clang++", "args": [ "-std=c++17", "-stdlib=libc++", "-g", "${workspaceFolder}/*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], ..

Tistory

백준 20044 Project Teams(c++)

https://www.acmicpc.net/problem/20044 20044번: Project Teams 입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si 의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로 www.acmicpc.net #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; for(int i=0;i>num; v.push_back(num); } sort(v.begin(),v.end()); vectorresult; for(int i=0;i

Tistory

스프링 쇼핑몰 장바구니 기능 테스트코드(Junit5 단위 테스트)

CartControllerTest package com.example.shoppingmall.controller; import com.example.shoppingmall.controller.cart.CartController; import com.example.shoppingmall.dto.cart.CartCreateRequestDto; import com.example.shoppingmall.entity.member.Member; import com.example.shoppingmall.repository.member.MemberRepository; import com.example.shoppingmall.service.cart.CartService; import com.fasterxml.jackso..

Tistory

프로그래머스 최댓값과 최솟값(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include using namespace std; string solution(string s) { string answer = ""; string str =""; vectorv; for(int i=0;i string -> int로 변환 to_string(숫자) => int -> string으로 변환 문자열의 각 요소가 공백이면 여태 더해주었던 ..

Tistory

프로그래머스 JadenCase 문자열 만들기(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; string solution(string s) { string answer = ""; if(s[0]>='a' && s[0] 소문자 -> 대문자 +=32 => 대문자 -> 소문자 객관적으로 내 코드는 가독성이 너무 떨어지는데, 다른 사람걸 참고하니까 너무 간결하고 깔끔하다고 생각했다. 우선적으로 현재 위치 -1 부..

Tistory

1박 2일 양평 글램핑(글램핑앤카라반) 후기(2022.09.11 ~ 2022.09.12)

http://naver.me/Fjxpvu7H 네이버 지도 글램핑앤카라반 map.naver.com 일단, 우선적으로 글램핑장 주변에는 아무거도 없을 것이라고 판단했고, 장을 대형 마트에서 보면 조금 더 효율적인 소비를 할 수 있을 것 가아서 여기에서 모든 음식거리들을 구매한 후 양평으로 이동했다. 도로 가운데 숨겨진 글램핑장 대학에서 4년 동안 정을 쌓아온 죽마고우 친구들과 함께 1박2일 양평 리조트를 갔다. 이제 다들 3학년이고 각자 일상에서 열심히 살아야 되고, 취업 준비 때문에 올해 마지막이라 생각하고 놀러 갔다. 처음에는 위치가 너무 안좋아서 걱정했지만, 대자연의 냄새를 맡을 수 있어서 너무 좋았다. 진짜 바로 앞에는 나무와 산, 그리고 카핑장이 있었는데 우리는 카핑장을 이용하지 않고 실내 텐트만 ..

Tistory

프로그래머스 피보나치 수(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int solution(int n) { vectoranswer; long long ans[100001] = {0}; ans[0] = 0; ans[1] = 1; answer.push_back(ans[0]); answer.push_back(ans[1]); for(int i=1;i

Tistory

프로그래머스 올바른 괄호(c++)

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; bool solution(string s) { bool answer = true; stackst; if(s[0]==')') { answer = false; return answer; } else { st.push(s[0]); } //첫번째 문자에 닫힌 괄호면 올바른 괄호가 아니기 때문에 바로 종료. for(int..

Tistory

백준 1377 버블소트(c++)

https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net #include #include #include using namespace std; int main() { int n; cin>>n; vectorv(n); for(int i=0;i>v[i].first; v[i].second = i; } sort(v.begin(),v.end()); int ans = -1; for(int i=0;i

Tistory

백준 10825 국영수(c++)

https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net #include #include #include #include #include using namespace std; vectorv; bool cmp(tuple&v1,tuple&v2) { if(get(v1) == get(v2) && get(v1) == get(v2) && get(v1) == get(v2)){ return get(v1)get(v2); } //국 == 영 else..

Tistory

백준 5052 전화번호 목록(c++)

https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net #include #include #include #include using namespace std; bool consistency(vectorv){ for(int i=0;it; while(t--) { cin>>n; for(int i=0;i>num; v.push_back(num); } sort(v.begin(),v.end()); bool ans = consistency(v)..

Tistory

백준 1764 듣보잡(c++)

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net #include #include #include #include using namespace std; int main() { int n,m; cin>>n>>m; vectors1; vectors2; vectorresult; for(int i=0;i>a; s1.push_back(a); } for(int i=0;i>b; s2.push_back(b); } sort(s1.begin(),s1.end());..

Tistory

Gradle 환경에서 Swagger 사용 방법(API 문서 자동화)

Swagger란? 백엔드 개발에 있어 Rest API를 설계, 빌드, 문서화하는데 도움이 되는 오픈 소스 소프트웨어 프레임워크이다. Swagger를 사용하는 경우 다른 개발팀과 협업 진행 시 백엔드의 API를 호출하는 프론트엔드 프로그램 제작 시 Swagger 적용 순서 1. bundle.gradle에 의존성 추가 2.application.yml에 다음과 같은 코드 추가 3.코드 작성(config패키지 생성 + SwaggerConfig 클래스 생성) package com.example.board.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuratio..

Tistory

스프링부트 프로젝트 최종 결과물

Review package com.studyProjectA.ShoppingMall.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import net.minidev.json.annotate.JsonIgnore; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.springframework.data.annotation.CreatedDate; import org.springframework.format.annotat..

Tistory

백준 2579 계단 오르기(c++)

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net #include #include #define max 301 int dp[max]; int arr[max]; using namespace std; int main() { int n; cin>>n; for(int i=1;i>arr[i]; } dp[1] = arr[1]; dp[2] = arr[1] + arr[2]; dp[3] = arr[1] + arr[3] > arr[2] + arr[3] ? arr[1] + ar..

Tistory

스프링 프로젝트 코드 리뷰

Review review = Review.builder() .comment(reviewRequestDto.getComment()) .rate(reviewRequestDto.getRate()) .product(product) .user(writer) .build(); return reviewRepository.save(review); 1.빌더(Builder)로 구현해보고자 한 건 좋지만, 생성자의 장점을 놓친 것 같다. 둘의 차이를 알고 어떨 때에는 빌더를 쓰고, 어떨 때에는 생성자를 쓰는지 차이점을 알면 더 좋을 것 같다. 빌더와 생성자에 대해서 각 상황에 맞게 적용하는 방안을 생각해봐야 겠다. @JoinColumn(name = "User_id") @ManyToOne(fetch = FetchType.LA..

Tistory

백준 2628 종이자르기(c++)

https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net #include #include #include using namespace std; int main() { int n,m,t; cin>>n>>m; cin>>t; // 자르는 횟수 vectorwidth(n); // 가로 vectorlength(m); // 세로 for(int i=0;i>a>>b; if(a==0) length.push_back(b); if(a==1) width.push_back(b); } wi..

Tistory

백준 1926 그림(c++)

https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net #include #include #include using namespace std; int n,m; int board[501][501]; bool visit[501][501] = {false}; vectorv; int wid; int mov[4][2] ={{-1,0},{1,0},{0,1},{0,-1}}; void dfs(int x,int y) { wid++; visit[x][y] = true; for..

Tistory

백준 5567 결혼식(c++)

https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net #include using namespace std; int board[501][501]; bool visited[501]; int cnt=0; int n,m; // n => 정점의 최대 수 m=> 간선의 수 void bfs(int node) { for(int i=2;in>>m; for(int i=0;i>a>>b; board[a][b] = board[b][a] = 1; } bfs(1..

Tistory

백준 2468 안전 영역(c++)

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net #include #include #include using namespace std; int h; int board[101][101]; bool visited[101][101]; int mov[4][2] = {{-1,0},{1,0},{0,1},{0,-1}}; int maxh = 0; void dfs(int x,int y,int num) { visited[x][y] = true; for(int i=0;in..

Tistory

백준 11652 카드(c++)

https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net #include #include #include #include using namespace std; long long cmp(paira,pairb) { if(a.second == b.second) return a.firstb.second; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; mapm; ..

Tistory

스프링 프로젝트 리팩토링 전 코드(review)

많은 리팩토링과 다양한 기능을 추가해 포스트맨으로 시험해 봤습니다. 우선적으로 이번 프로젝트를 통해서 게시판 기능을 이용한 CRUD에 대해 다잡을 수 있었고, 시큐리티, jwt token에 대해서도 조금 생각해볼 수 있는 계기가 되었습니다. 팀마다 기능을 나누어 구현했기에, 팀과의 협력과 공유하는 것이 얼마나 중요한지에 대해 깨닫게 되었습니다. 리팩토링 전 코드 Entity Entity @Data @AllArgsConstructor @NoArgsConstructor @Entity public class Review { // 아이디 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 상품 매핑 @JoinColumn(name..

Tistory

ArrayList<E> 클래스 및 제네릭 함수 개념

ArrayList는 컬렉션 클래스 중 가장 많이 사용하는 함수이다. 컬렉션 프레임워크 ? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 데이터르 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현해 놓은 것이다. List 클래스의 특징 중복 저장을 허용한다. 저장 순서가 유지된다. ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 활용해 요소 접근이 편리하다. ArrayList arrList = new ArrayList; arrList.add(40); arrList.add(20); arrList.add(30); arrList.add(10); // for 문과 get() 메소드를 이용한 요소의 출력 for (int i = 0..

Tistory

백준 7576 토마토(c++)

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net #include #include #include #define max 1001 using namespace std; int n,m; int tomato[max][max]; queueq; bool visited[max][max]; int mov[4][2] = {{-1,0},{1,0},{0,1},{0,-1}}; void bfs() { visited[max][max] = {false};..

Tistory

백준 1697 숨바꼭질(c++)

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include using namespace std; bool visited[200001] = {false}; int main() { int start,end; queueq; cin>>start>>end; q.push({start,0}); visited[start] = false; while(!q.empty()) { int position = q.fron..

Tistory

백준 2644 촌수계산(c++)

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net #include #include #define max 101 using namespace std; int a,b; int board[max][max]; int x,y,n,m; int visited[max] = {0}; int cnt[max] = {0}; void bfs(int node) { queueq; q.push(node); while(!q.empty()){ node = q..

Tistory

Junit5을 이용한 테스트코드 작성(단위 테스트 코드)

프로젝트나 사람들과 협업을 하게되면 테스트 코드는 필수적이다. 테스트코드를 작성하는 이유는 다음과 같다. 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 나중에 코드를 리팩토링 할 때 기존 기능의 올바르게 수행되는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킨다. 시스템에 대한 실제 문서를 제공해준다. @SpringBootApplication public class BoardApplication { public static void main(String[] args) { SpringApplication.run(BoardApplication.class, args); } } 스프링부트 웹을 실행할 수 있는 이유 @SpringBootApplicaiton은 스프링부트의 자동 설정, 스프링 Bean 읽기..

Tistory

상속(inheritance)

상속이란 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 객체 지향 프로그래밍을 구성하는 특징 중 하나이다. 상속을 이용하면 기존 클래스의 모든 필드와 메소드를 물려 받아 새로운 클래스를 정의할 수 있다. 기존 클래스 : 부모클래스(parent class), 상위클래스(super class), 기초 클래스(base class) 새로운 클래스 : 자식클래스(child class), 하위클래스(sub class), 파생클래스(derived class) 상속의 장점 기존 클래스 재활용 계층적 관계 구성(상하관계 구분) 자식 클래스 사용법 (새롭게 만든 클래스) class 자식클래스이름 extends 부모클래스이름 즉 자식클래스 안에 부모클래스가 들어가있음을 확인할 수 있다. ※중요..

Tistory

메소드 오버라이딩(Method Overriding) 개념

메소드 오버로딩이랑 메소드 오버라이딩을 구분할 필요가 있다. 메소드 오버로딩 vs 메소드 오버라이딩 메소드 오버로딩이란 서로 다른 시그니처(매개변수 목록)를 갖는 여러 메소드를 하나의 이름으로 정의하는 것이다. 메소드 오버라이딩이란 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니처를 갖는 메소드로 다시 재정의 하는 것을 의미한다. 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외하고 모든 메소드를 상속받는다. 이를 그대로 사용해도 되지만, 재정의해서 사용할 수도 있다. 상속받은 부모 클래스의 메소드를 재정의하기 위해 사용하는 것을 메소드 오버라이딩이라고 한다. 메소드 오버라이딩의 조건 자식 클래스 메소드의 선언부 = 부모 클래스 메소드의 선언부 메소드의 ..

Tistory

백트래킹(backtracking)

백트래킹이란 ? 현재 상태에서 가능한 모든 후보를 따라 들어가며 탐색하는 알고리즘 ex) 오목을 예시로 둘 수 있다. 오목을 둘 때 상대방의 바둑알을 어디에 두눈가에 따라 다양한 후보들이 생긴다. 즉 가능한 모든 경우를 생각해볼 수 있기에 이를 백트래킹 알고리즘이라고 할 수 있다. 알고리즘 예시1) N과 M(1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net N과 M은 전형적인 백트래킹 문제이다. 이는 1~N까지 중복 없이 M개를 선택하여 ..

Tistory

백준 1260 DFS와 BFS(c++)

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include #include #include #include #define max 1001 using namespace std; int n,m; int v; int board[max][max]; bool visited[max] = {false}; void dfs(int node) { visited[node] = true; cout

Tistory

17086 아기 상어 2(c++)

https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net #include #include #include #include #include using namespace std; int n,m; int ans=0; int board[51][51]; int mov[8][2] = {{-1,0},{1,0},{0,1},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}}; int bfs(int a,int b) { bool v..

Tistory

협업 및 팀플을 위한 Git 사용

인텔리제이에서는 터미널을 이용해 다양한 git기능을 이용할 수 있다. 터미널을 이용해 협업을 위한 git 명령어 사용(branch, pull, checkout ...등)에 대해서 알아 볼 것이다. 1. Forks로 따온 당사자의 GitHub Repository에서 코드(HTTPS)를 복사한다. 2.인텔리제이 폴더 열기로 바탕화면 경로 눌러서 바탕화면 경로(Desktop)으로 들어간다. 3. terminal -> git clone 카피한 주소 입력해줘서 프로젝트를 클론해준다. 4.폴더 열기해서 방금 클론한 프로젝트로 들어가준다. ※ 프로젝트 코드 작성하는 법 ※ 코드 작성 전에 merge 해줘서 메인이랑 합쳐주기 명령어 : git pull 코드 작성 전에, checkout으로 자기 이름으로 branch 들..

Tistory

백준 15686 치킨 배달(c++)

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net #include #include #include #include #include using namespace std; vector house, chicken ,pick; int n,m,t; int ret = 100000000; void dfs(int pos) { if(pick.size()==m){ int candi = 0; for(int i=0;in>>m; for(int i=..

Tistory

백준 14502 연구소(c++)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net #include #include #include #include using namespace std; int n,m; int map[8][8]; int mov[4][2] = {{-1,0},{1,0},{0,1},{0,-1}}; int ret = 0; void bfs(){ bool visited[8][8] = {false}; queue q; int backup[8][8]; for(int i=0;i

Tistory

필드의 구분(클래스 변수, 인스턴스 변수, 지역 변수)

자바에서 필드는 세 가지로 구분된다. 변수 생성시기 소멸시기 접근방법 클래스 변수 클래스가 메모리에 올라갈때 프로그램 종료시 클래스이름.변수이름 인스턴스 변수 인스턴스 생성시 인스턴스 소멸시 인스턴스이름.변수이름 지역 변수 블록 내에서 변수 선언시 블록을 벗어날시 변수이름 static int 변수이름 int 변수이름 //class 내에 사용하면 인스턴스 변수 + public class 내에 사용하면 지역 변수 클래스 변수는 모든 인스턴스(객체)가 같은 값을 공유하지만, 인스턴스 변수는 그렇지 않고 고유한 값을 지닌다. http://www.tcpschool.com/java/java_member_field 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파..

1 2