daily1313의 등록된 링크

 daily1313로 등록된 티스토리 포스트 수는 182건입니다.

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

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

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

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

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

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

일본여행 2023.01.01 3일차 시부야(Shibuya), 하라주쿠(Harajuku) [내부링크]

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

일본여행 2022.12.31 2일차 우에노(Ueno), 긴자(Ginza), 신오쿠보 [내부링크]

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

일본 여행 2022.12.30 1일차 신주쿠(Shinjuku), 타카다노바바(Takadanobaba) [내부링크]

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

2022 12월 회고록 [내부링크]

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

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

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

Git-flow를 활용한 협업 방식 [내부링크]

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

[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..

[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 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있는 서비스..

[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 지원, 권한..

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에게 전달받은 데이터(가공된 값)들을..

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 노드 사이의 작업 처리 단위를 동시에 맞춤) 결과를 ..

2022 11월 회고록 [내부링크]

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

[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보다..

[Spring] MVC Pattern [내부링크]

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

우아한테크코스 1주차 회고록 [내부링크]

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

[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에 해당하는..

[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를 처..

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가 동일하다. 속도 측면에서는 빠르지만, 안정성이 떨어진다..

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..

우아한테크코스 프리코스 하기 전 마음가짐 [내부링크]

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

백준 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] =='..

백준 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

백준 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..

AWS RDS 구축 및 인코딩, 타임존 적용하기 [내부링크]

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

백준 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>..

서브 도메인(sub domain), 리디렉션(redirection) 개념정리 및 적용 [내부링크]

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

백준 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

백준 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

백준 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

Docker [내부링크]

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

[메타코딩] 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 파일에 옮긴다...

[메타코딩 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 ~/..

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

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

[메타코딩 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/..

[메타코딩 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 파일명과 같이 문자로도 권한을 적용시킬 수 있다.

[메타코딩 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

포트포워딩[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 포트포워딩 #아이피타임 포트..

[메타코딩 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

[메타코딩 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..

[메타코딩 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..

[메타코딩 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..

[메타코딩 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..

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..

[메타코딩 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에..

[메타코딩 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 저장소 => 개인 저장소(새롭게 생긴 프로그..

[메타코딩 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

[메타코딩 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

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

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

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

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

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

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

[메타코딩 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(짝수)에서는 서비스를 실행한..

[메타코딩 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

[메타코딩 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

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

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

[메타코딩 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

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

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

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) => 기억, 해석, 연산..

백준 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'..

백준 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)) {..

스프링 쇼핑몰 장바구니 기능 테스트코드(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..

백준 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

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" ], ..

스프링 쇼핑몰 프로젝트 장바구니(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..

프로그래머스 숫자의 표현(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; }..

프로그래머스 올바른 괄호(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..

프로그래머스 피보나치 수(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

1박 2일 양평 글램핑(글램핑앤카라반) 후기(2022.09.11 ~ 2022.09.12) [내부링크]

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

프로그래머스 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 부..

프로그래머스 최댓값과 최솟값(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으로 변환 문자열의 각 요소가 공백이면 여태 더해주었던 ..

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..

백준 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());..

백준 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)..

백준 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..

백준 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

백준 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..

스프링 프로젝트 코드 리뷰 [내부링크]

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..

백준 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..

스프링부트 프로젝트 최종 결과물 [내부링크]

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..

백준 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..

백준 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..

스프링 프로젝트 리팩토링 전 코드(review) [내부링크]

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

백준 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; ..

백준 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..

Junit5을 이용한 테스트코드 작성(단위 테스트 코드) [내부링크]

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

백준 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..

백준 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..

백준 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};..

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..

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..

백준 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

백트래킹(backtracking) [내부링크]

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

메소드 오버라이딩(Method Overriding) 개념 [내부링크]

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

상속(inheritance) [내부링크]

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

메소드의 구분(클래스 메소드, 인스턴스 메소드) [내부링크]

class LoginPage{ boolean success; //인스턴스 변수 void Login(){ success = true; } //인스턴스 메소드 static void classLogin(boolean success){ return success; } //클래스 메소드 } 반환형 앞에 static 키워드가 존재하면 클래스 메소드(static method)라 하며 그렇지 않으면 인스턴스 메소드(instance method)라고 한다. 그렇다면 이 둘의 차이는 무엇일까? 클래스 메소드는 인스턴스(객체)를 생성하지 않고도 바로 접근이 가능하다. System.out.println(LoginPage.classLogin(true)); // 클래스 메소드 LoginPage myLoginPage = new L..

필드의 구분(클래스 변수, 인스턴스 변수, 지역 변수) [내부링크]

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

백준 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

백준 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=..

협업 및 팀플을 위한 Git 사용 [내부링크]

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

백준 2170 선 긋기(c++) [내부링크]

https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y(-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int x,y; int n; cin>>n; vectorv; for(int i=0;i>x>>y; v.push_back(mak..

백준 7562 나이트의 이동(c++) [내부링크]

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net #include #include #include #define max 301 using namespace std; queueq; int board[max][max]; bool visited[max][max]; int mov [8][2] = {{2,1},{1,2},{-2,1},{-1,2},{-2,-1},{-1,-2},{1,-2},{2,-1}}; // 말의 이동 int main() { int t; ci..

SpringBoot JPA(Java Persistence API) 사용 목적 [내부링크]

유지, 보수와 효율성 증대 JPA를 사용하지 않고, SQL문으로 테이블을 생성한다면 일일히 CRUD를 작성해주어야 한다. 하지만, JPA를 사용한다면 일일히 CRUD문을 작성하지 않고 JPA에게 저장할 객체로 전달해주면 된다. 테이블 간에 연관관계를 정의하기 위해 사용 ex) entity가 2개일 때, 작성자 entity ↔ 게시글 entity간의 연관관계를 정의하기 위해서는 1 : 1(OnetoOne,일대일), 1 : n(OnetoMany,일대다), n: 1(ManytoOne,다대일)이 있다. 작성자 한 명은 여러 개의 게시글을 사용할 수 있으므로, 작성자 입장에서는 1 : n(일대다,OnetoMany) 관계지만, 게시글 입장에서는 다대일(ManytoOne)관계이다(여러 개의 게시글들을 한 명이 쓸 수..

백준 1012 유기농 배추(c++) [내부링크]

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net #include #include #include #define max 51 using namespace std; int mov[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; int board[max][max]; bool visited[max][max] = {0}; int n,m,x,y; int cnt=0; void dfs(int a,int b) { visited[a][b] = true; f..

DTO, DAO, Repository, Entity 개념 [내부링크]

Entity(Domain) 데이터베이스에 쓰일 컬럼 및 여러 엔티티 간의 연관관계 데이터베이스의 테이블을 하나의 엔티티로 생각해도 됨 DB 테이블과 1:1 매핑 Repository Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스 Service와 DB를 연결하는 고리의 역할 DB에 적용하고자 하는 CRUD를 정의하는 영역 DAO(Data Access Object) DB에 접근하는 객체를 의미 Service가 DB에 연결할 수 있게 해주는 역할 DB를 사용하여 데이터를 조회하거나 조작 DTO(Data Transfer Object) DTO는 VO(value Object)이며, 계층간 데이터 교환을 위한 객체를 의미 (Read Only 개념을 담고 있음) Spring Boot의 서비..

재귀(recursion) 개념정리 [내부링크]

재귀 함수 자기 자신을 호출하는 함수 Base Case : 간단히 결과를 반환하는 부분 Recursive Case : 자기 자신을 호출하는 부분 factorial - n==0 n! =1 // Base Case n>0 n! = n * (n-1)! // Recursive case 재귀를 활용한 flood fill 알고리즘 #include using namespace std; int n, Board[100][100]; void fill(int r,int c) { if(rn-1 || c n-1) return; //경계면을 벗어나면 return if(Board[r][c]) return; //벽이 있으면 return Board[r][c] = 1; fill(r-1,c);//위 fill(r+1,c);//아래 fill(..

백준 4963 섬의 개수(c++) [내부링크]

https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net #include #include #include #define max 51 using namespace std; int w,h,n,m; int board[max][max]; bool visited[max][max] = {0}; int dir[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{1,1},{-1,-1},{1,-1},{-1,1}}; //상하좌우 대각선 이동 void d..

백준 11724 연결 요소의 개수(c++) [내부링크]

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 이 문제는 dfs, bfs의 기본 문제이다. #include #include #include #include #include #define max 1001 int board[max][max]; bool visited[max] = {0}; int cnt=0; int n,m; using namespace std; //void dfs(int..

백준 2606 바이러스(c++) [내부링크]

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net bfs #include #include #include #include #define max 101 using namespace std; int n, com; int cnt=0; int graph[max][max]; void bfs(int node){ bool visited[max]= {false}; queuemyqueue; visited[node]=true; myqueue.push(node); whi..

백준 2178 미로 탐색(c++) [내부링크]

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net #include #include #include #include #define max 101 using namespace std; queueq; int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; int board[max][max]; int n,m; string s; void bfs(int x,int y){ bool visited[max][max] = {false}; visited[x][y]=true..

BFS [내부링크]

BFS(Breadth First Search) 그래프 순회 방법 중 하나(너비 우선 탐색) 시작 노드에서 인접노드를 방문하고, 방문한 노드에서 인접 노드를 모두 방문하는 것을 반복한다. Queue(큐)를 이용한 BFS 풀이 입력 5(노드의 수) 6(간선의 수) 0 1 0 2 1 3 1 4 2 4 3 4 (간선이 존재하는 노드의 쌍 입력) 출력 0 1 2 3 4 #include #include #include #include using namespace std; #define max 10 int n, e; int graph[max][max]; void bfs(int node){ bool visited[max]= {false}; queuemyqueue; visited[node]=true; myqueue.pu..

백준 2667 단지번호붙이기(c++) [내부링크]

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net (스택 쓰지 않고 풀기) #include #include #include #include using namespace std; int mov[4][2] = {{-1,0},{1,0},{0,1},{0,-1}}; bool check[26][26]; int Board[26][26]; vectorrooms; int cnt=0; int n; string s; void dfs(int x,int y) { for(..

DFS [내부링크]

DFS(Depth First Search) 그래프 순회 방법 중 하나(깊이 우선 탐색) 시작 노드에서 깊이가 커지는 방향으로 탐색을 진행하여 더 이상 방문할 인접 노드가 없는 경우 이전 노드가 돌아가서, 다시 깊이 우선 탐색을 반복하게 됨. 재귀 호출을 통해 구현 1. 입력 5(노드의 개수) 6(간선의 개수) 노드의 쌍 0 1 0 2 1 3 1 4 2 4 3 4 (각 쌍들 사이에 간선이 존재) 출력 0 1 3 4 2 #include #include using namespace std; #define max 10 int n, e; int graph[max][max]; bool visited[max]; void dfs(int node) { visited[node] = true; coutu>>v; graph[..

백준 2294 동전 2(c++) [내부링크]

https://www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv(n); vectordp(k+1); dp[0]=0; for(int i=1;iv[i]; } sort(v.begin(),v.end(),greater()); for(int i=0;i

백준 2293 동전 2(c++) [내부링크]

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv(n); vectordp(k+1); for(int i=0;i>v[i]; } dp[0]=1; for(int i=0;i

예외처리(Exception)기능 + Response 기능(데이터 반환) 을 추가한 게시판 만들기 코드 [내부링크]

Response package com.example.mentoring.Response; import com.fasterxml.jackson.annotation.JsonInclude; import com.sun.net.httpserver.Authenticator; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @JsonInclude(JsonInclude.Include.NON_NULL)// Null 버림 @AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter public class Response { private boolean success; private ..

백준 1213 팰린드롬 만들기(c++) [내부링크]

https://www.acmicpc.net/problem/1213

프로그래머스 비밀지도(c++) [내부링크]

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

프로그래머스 같은 숫자는 싫어(c++) [내부링크]

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

프로그래머스 체육복(c++) [내부링크]

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

프로그래머스 김서방은 x에 있다(c++) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12919 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; string solution(vector seoul) { string answer = ""; answer+="김서방은 "; int cnt=0; for(int i=0;i

프로그래머스 로또의 최고 순위와 최저 순위(c++) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; vector solution(vector lottos, vector win_nums) { vector answer; sort(lottos.begin(),lottos.end()); sort(win_nums.begin(),win_nums.end()); int cnt=7; int cnt2=7; for(int i=0;i..

스프링 스터디(RestAPI의 다양한 기능 추가(Exception, Response..) [내부링크]

4주차 Custom Respose 만들기 (기존 포스트맨 결과와 비교) 예외처리 사용 및 필요성 Exception 작성 Advice 생성 및 사용 README.md 파일 만들기 Response을 커스텀해서 사용하는 이유는 ResponseEntity 클래스를 통해 리턴을 해주면 데이터의 형식을 수정할 수가 없게 된다. 즉 형식을 유동적으로 수정해주기 위해 Response를 사용한다. ResponseEntity로 데이터를 반환할 경우 Response로 데이터를 반환할 경우 Response로 데이터를 반환했을 때, ResponseEntity로 데이터를 반환했을 때 보다 더욱 다양한 틀에 감싸져 있음을 확인할 수 있다. 이렇게 사용하는게 더욱 편리한 이유는 프론트엔드 개발자의 편의를 위함과 더불어, 데이터의 형..

백준 1958 LCS 3(c++) [내부링크]

https://www.acmicpc.net/problem/1958 1958번: LCS 3 첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다. www.acmicpc.net #include #include #include #include using namespace std; int main() { vectordp(101,vector(101,vector(101,0))); string s1,s2,s3; cin>>s1>>s2>>s3; for(int i=1;i

백준 5582 공통 부분 문자열(c++) [내부링크]

https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net #include #include #include #include using namespace std; int main() { string s1,s2; cin>>s1>>s2; vectordp(4001,vector(4001,0)); int result = 0; for(int i=1;i

백준 9251 LCS(c++) [내부링크]

https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vectorv(1001,vector(1001,0)); string s1,s2; cin>>s1>>s2; for(in..

백준 1339 단어 수학(c++) [내부링크]

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { string s; int n; cin>>n; vectoralpha(26); for(int i=0;i>s; for(int j=0;j

접근제어자 + 제어자 개념 [내부링크]

접근 제어자 : 클래스의 접근 범위를 제한하기 위한 제어자이다. public : 접근제한 x protected : 같은 패키지 + 다른 패키지의 자식 클래스에서 접근 o default : 같은 패키지 내에서만 접근 o(자료형 앞에 아무 것도 쓰지 않았을 때) private : 같은 클래스에서만 접근 o 허용 범위 : public > protected > default > private 접근 제어자 같은 클래스 같은 패키지 자식 클래스 그 외 public o o o o protected o o o x default o o x x private o x x x 기타 제어자 final : 변경할 수 없는 상수(constant)를 의미한다. (c,c++ 관점에서 바라볼 때 const와 같은 의미이다) final을..

백준 1781 컵라면(c++) [내부링크]

https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net #include #include #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; priority_queuepq; for(int i=0;i>a>>b; v.push_back(make_pair(a,b)); } sort(v.begin(),v.end()); long long sum = 0; for..

백준 1049 기타줄(c++) [내부링크]

https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net #include #include #include #include using namespace std; bool cmp(pairp1,pairp2) { return p1.firstn>>m; vectorv; for(int i=0;i>p>>a; v.push_back(make_pair(p,a)); } int ans1 = 0; int ans2 = 0; int cnt=0; // 끊어진 기타줄 수가 6개보다..

1049 기타줄(c++) [내부링크]

https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net #include #include #include #include using namespace std; bool cmp(pairp1,pairp2) { return p1.firstn>>m; vectorv; for(int i=0;i>p>>a; v.push_back(make_pair(p,a)); } int ans1 = 0; int ans2 = 0; int cnt=0; // 끊어진 기타줄 수가 6개보다..

스프링 스터디(3주차) CRUD 게시판 만들기 + Postman 사용 [내부링크]

스프링에서 CRUD 게시판을 만들기 위해 만들어줬던 4가지 1.Entity(개체, DB의 관점에서는 테이블로 바라볼 수 있음) -> 가장 먼저 만듦 기본 어노테이션 @Data @AllArgsConstructor @NoArgsConstructor @Entity =>이것 네 개는 필수적으로 깔고 코드 작성 해야함. 2.BoardRepository=>Repository를 통해 , DB와 스프링 서버를 연동시켜준다. =>코드가 간결하기에 두 번째로 만들어준다. 다른 파일들은 전부 class이지만, BoardRepository는 interface를 통해 상속(extends)받아야 한다. 3. => Controller, Service Controller는 요청을 담당하고, Service는 기능 구현을 담당한다. C..

1202 보석 도둑(c++) [내부링크]

https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net #include #include #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv; vectorc; priority_queuepq; for(int i=0;i>a>>b; v.push_back(make_pair(a,b)); } sor..

백준 19598 최소 회의실(c++) [내부링크]

https://www.acmicpc.net/problem/19598 19598번: 최소 회의실 개수 2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { int n; cin>>n; priority_queuepq; priority_queueresult; for(int i=0;i>s>>e; pq.push(make_pair(s,e)); } result.push(pq.top().second); pq.pop()..

백준 13975 파일 합치기 3(c++) [내부링크]

https://www.acmicpc.net/problem/13975 13975번: 파일 합치기 3 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데, www.acmicpc.net #include #include #include #include using namespace std; int main() { priority_queuepq; int t; cin>>t; int n; while(t--) { long long sum =0; cin>>n; for(int i=0;i>a; pq.push(a); } while(pq.size()>1) { long long n1 = pq.to..

백준 2805 나무 자르기(c++) [내부링크]

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net #include #include #include #include using namespace std; int main() { int n,m; cin>>n>>m; vectortree; for(int i=0;i>a; tree.push_back(a); } int l = 0; int r = *max_element(tree.begin(),tree.end()); int..

백준 2776 암기왕(c++) [내부링크]

https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net #include #include #include using namespace std; int main() { vectorv1; vectorv2; int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i>a; v1.push_back(a); } int m; cin>>m; for(int i=0;i>b; v2.push_back(b); } sort(v1.begin()..

백준 1015 수열 정렬(c++) [내부링크]

https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; for(int i=0;i>a; v.push_back(make_pair(a,0)); } for(int i=0;ii && v[j].first==v[i].first) ..

백준 4889 안정적인 문자열(c++) [내부링크]

https://www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { string s; stackst; int start=1; while(cin>>s) { int cnt=0; if(s[0]=='-') break; for(int i=0;i

백준 1758 알바생(c++) [내부링크]

https://www.acmicpc.net/problem/1758 #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; for(int i=0;i>a; v.push_back(a); } sort(v.begin(),v.end(),greater()); long long sum = 0; for(int i=0;i

백준 16916 부분 문자열(c++) [내부링크]

https://www.acmicpc.net/problem/16916 16916번: 부분 문자열 첫째 줄에 문자열 S, 둘째 줄에 문자열 P가 주어진다. 두 문자열은 빈 문자열이 아니며, 길이는 100만을 넘지 않는다. 또, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net #include #include #include #include using namespace std; int main() { string s,p; cin>>s>>p; if(s.find(p)!=string::npos) cout

18870 좌표 압축(c++) [내부링크]

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; vectorv; vectorv2; for(int i=0;i>num; v.push_back(num); v2.pu..

스프링 스터디(2주차) + 내용 정리 [내부링크]

2️주차 배운 내용 스프링에서 데이터베이스를 다루는 방법 DB, Domain, Repository, Service, Controller yml 파일 과 properties 파일의 차이점 컴퓨터끼리의 통신 언어(XML, JSON의 구조) GET, POST, PUT, DELETE 요청 MVC 패턴을 이용한 CRUD 게시판 생성 #1 properties 와 yml 파일 구조 및 장단점 #Application.properties Spring-datasource-url = "" Spring-datasource-username = "" Spirng-datasource-password="" #Application.yml server : 8080 Spring Datasource : url: jdbc:mysql://l..

백준 20291 파일 정리(c++) [내부링크]

https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net #include #include #include #include using namespace std; int main() { int n; cin>>n; string str; mapm; while(n--) { cin>>str; string ans=""; for(int i=0;i

백준 15353 큰 수 A+B(c++) [내부링크]

https://www.acmicpc.net/problem/15353 15353번: 큰 수 A+B (2) C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net #include #include #include #include #include using namespace std; int main() { string a,b; cin>>a>>b; dequev1; dequev2; vectorans; vector::iterator it; for(int i=0;iv2.size()) { for(int i=0;i

백준 13164 행복 유치원(c++) [내부링크]

https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 www.acmicpc.net #include #include #include using namespace std; int main() { int n,k; cin>>n>>k; vectorv; for(int i=0;i>a; v.push_back(a); } vectorcost; for(int i=1;i

백준 11478 서로 다른 부분 문자열의 개수(c++) [내부링크]

https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net #include #include #include #include #include #include using namespace std; int main() { string str; sets; vectorv; cin>>str; for(int i=0;i

백준 1374 강의실(c++) [내부링크]

https://www.acmicpc.net/problem/1374 1374번: 강의실 첫째 줄에 강의의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 세 개의 정수가 주어지는데, 순서대로 강의 번호, 강의 시작 시간, 강의 종료 시간을 의미한다. 강의 www.acmicpc.net #include #include #include #include using namespace std; priority_queuelectures; priority_queuerooms; int main() { int n; cin>>n; int number, starttime,endtime; for(int i=0;i>number>>starttime>>endtime; lectures.pus..

패키지(package) 개념 [내부링크]

패키지란? 클래스 + 인터페이스의 집합이다. 하나의 디렉터리를 의미 장점: 1. 파일관리의 효율성이 증대 2. 이름 충돌 문제 해결 패키지는 다른 패키지를 포함할 있다. ex)java.lang.String 패키지의 선언 문법 package 패키지이름; import문의 사용 선언한 패키지에 속한 클래스를 다른 파일에서 사용하기 위함이 목적이다. 문법 import 패키지이름.클래스이름 import 패키지이름.* 자바에서 가장 많이 사용하는 java.lang 패키지에 대해서는 import를 사용하지 않아도 사용할 수 있게 되어있다.

백준 1120 문자열(c++) [내부링크]

https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string a,b; cin>>a>>b; int cnt=0; if(a.size()==b.size()) { for(int i=0;i

백준 1431 시리얼 번호(c++) [내부링크]

https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net #include #include #include #include #include #include using namespace std; bool cmp(string s1,string s2) { int sums1 = 0; int sums2 = 0; if(s1.size()==s2.size()) { for(int i=0;i='0' && s1[i]='0' && s2[i]

백준 11656 접미사 배열(c++) [내부링크]

https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net #include #include #include #include using namespace std; int main() { string str; vectorv; cin>>str; for(int i=0;i

백준 5635 생일(c++) [내부링크]

https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net #include #include #include #include #include #include using namespace std; bool cmp(tuple&v1,tuple&v2) { if(get(v1)==get(v2)) { if(get(v1)==get(v2)) return get(v1)>get(v2); else return get(v1)>get(v2); } else return get(v1)>get(v2); } int main() { int n; cin>>n; vecto..

백준 10989 수 정렬하기 3(c++) [내부링크]

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin>>n; vectorcount(10001); for(int i=0;i>num; count[num-1]++; } for(int i=0;i

백준 2075 N번째 큰 수 [내부링크]

https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net #include #include using namespace std; int main() { int n; cin>>n; priority_queuepq; for(int i=0;inum; pq.push(num); } } int cnt=1; for(int i=0;i

백준 10867 중복 빼고 정렬하기(c++) [내부링크]

https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net #include #include using namespace std; sets; set::iterator it; int main() { int n; cin>>n; for(int i=0;i>num; s.insert(num); } for(auto it = s.begin();it!=s.end();it++) { cout

백준 10814 나이순 정렬(c++) [내부링크]

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net #include #include #include #include #include #include using namespace std; bool com(tuple&v1,tuple&v2) { if(get(v1)==get(v2)){ return get(v1)n; for(int i=0;i>num>>str; v.push_back(make_tuple(num,str,i)); } sort(v.begin(),v.end..

백준 1212 8진수 2진수(c++) [내부링크]

https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net #include #include #include using namespace std; string eight[8] = {"000","001","010","011","100","101","110","111"}; int main(){ string s; cin >> s; if(s=="0") cout

백준 1373 2진수 8진수(c++) [내부링크]

https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net #include #include #include #include using namespace std; int main() { string s; cin>>s; int n = s.size(); if(n%3==1) cout

백준 14425 문자열 집합(c++) [내부링크]

https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net #include #include #include #include #include using namespace std; int main() { int n,m; cin>>n>>m; vectorv1; vectorv2; string a,b; while(n--) { cin>>a; v1.push_back(a); } sort(v1.begin(),v1.end()); int cnt..

백준 5525 IOIOI(c++) [내부링크]

https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net #include #include #include using namespace std; int main() { int n,m; string ans=""; cin>>n; int cnt=0; vectorv; for(int i=0;i>m; for(int i=0;i>c; v.push_back(c); } for(int i=0;i

메소드 오버로딩 [내부링크]

메소드 오버로딩(method overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것을 의미한다. 메소드 오버로딩의 장점: 1. 메소드에 사용되는 이름 절약 2. 매개변수 타입이나 개수 고려 x 3. 다형성 구현 메소드 원형 1. println() 2. println(boolean x) 3. println(char x) 4. println(char[] x) 5. println(double x) 6. println(float x) 7. println(int x) 8. println(long x) 9. println(Object x) 10. println(String x) 메소드 오버로딩의 조건 1.메소드의 이름이 같아야 한다. 2.메소드의 시그니처, 즉 매개변수의 개수 또는 타입이 달라야 한다..

this와 this() [내부링크]

this 참조 변수 this 참조 변수는 인스턴스가 자기 자신을 참조하는 변수이다. this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다. class Car { private String modelName; private int modelYear; private String color; private int maxSpeed; private int currentSpeed; Car(String modelName, int modelYear, String color, int maxSpeed) { this.modelName = modelName; this.modelYear = modelYear; this.color = color; this.maxSpeed = maxSpeed; this.currentSpeed..

생성자 개념 [내부링크]

생성자(constructor) 자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다. 생성자 이름 = 클래스 이름 Car 클래스의 생성자 이름 => Car 생성자의 특징 1.생성자는 반환값이 없지만, 반환타입을 void형으로 선언하지 않는다. 2.생성자는 초기화를 위한 데이터를 인수로 받을 수 있다. 3.객체를 초기화하는 방법이 여러개 있을 때는 하나의 클래스가 여러개의 생성자를 가질 수 있다.(매개변수가 여러 개 일때),메소드 오버로딩이 가능하다. ex) Car(String modelName) {} Car(String modelName, int modelYear) {} Car(String modelName, int model..

메소드 개념 [내부링크]

클래스의 멤버는 필드(field)와 메소드(method)로 구성되어있다. 메소드(method): 특정 작업을 수행하기 위한 명령문의 집합이다.(함수로 생각하면 편리) 메소드의 사용목적 : 1. 코드의 중복성 해소 2. 모듈화로 인한 가독성 증대 3. 유지, 보수가 편리하다. 메소드 정의 접근제어자 반환타입 메소드이름(매개변수목록,parameters)//선언부{ //구현부 } Car의 클래스 accelerate() 메소드 정의 class Car { private int currentSpeed; private int accelerationTime; ... ① public void accelerate(int speed, int second) { // 선언부 // 구현부 System.out.println(sec..

클래스 선언 [내부링크]

접근제어자 class 클래스이름{ 접근제어자 필드1의 타입 필드1의 이름; 접근제어자 필드2의 타입 필드2의 이름; 접근제어자 메소드1의 원형 접근제어자 메소드2의 원형 } 인스턴스의 생성: 1. 참조변수 선언: 클래스이름 객체참조변수이름; ex)Car myCar; 2. 인스턴스 생성: 클래스이름 객체참조변수이름 = new 클래스이름(); ex) Car myCar = new Car(); 참고자료 출처 http://www.tcpschool.com/java/java_class_declaration 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com

백준 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; string str1,str2; vectors1; vectors2; vectorresult; vector::iterator iter; for(int i=0;i>str1; s1.push_back(str1); } for(int i=0;i>s..

백준 1357 뒤집힌 덧셈 [내부링크]

https://www.acmicpc.net/problem/1357 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev( www.acmicpc.net #include #include #include using namespace std; int main() { string x,y; cin>>x>>y; reverse(x.begin(),x.end()); reverse(y.begin(),y.end()); string ans; int a=stoi(x); int b=stoi(y); int c= a+b; an..

백준 1251 단어 나누기 [내부링크]

https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net #include #include #include using namespace std; int main() { string str; string ans = ""; cin>>str; for(int i=1;i

스프링부트 기본구조 및 JPA [내부링크]

1️.Domain(Entity) -Mysql 테이블과 매핑되는 클래스이다. -테이블 정보를 가공할 때 필요하다. -JPA 사용시 여러 어노테이션을 사용하며, 테이블, 필드, 필드 옵션 등을 설정한다. 2️.Repository(데이터베이스에서 데이터를 넣고 빼는것을 담당) -repository는 DB와 스프링서버를 연결시켜줄 수 있다. -스프링 서버가 데이터가 필요한 경우 Repository(JPA) 통해 데이터베이스의 데이터를 가져온다. 3️Service(기능 구현 담당) -기능 구현을 하기 위한 클래스 -Repository한테 데이터를 받아온 후, 기능을 구현해서 Controller에게 리턴해준다. -데이터는 Repository(JPA)에 있던 데이터이다. 4️Controller(요청 담당) -..

프로그래머스 소수 찾기(c++) [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr #include #include #include using namespace std; int solution(int n) { int answer = 0; vectorcheck(n,0); for(int i=2;i

spring boot 프로젝트 생성 및 mysql 스프링부트 연동 [내부링크]

1. Type :Gradle JDK : 16 Java : 11 Packaging : Jar로 설정 2. 스프링부트의 종속성 추가(기능 추가) Spring Web Spring Data JPA MySQL Driver Lombok 4가지를 추가해준다. 3. Mysql 스키마 생성 Connection name 입력 및 Password 지정 password는 Store in Vault를 입력해 저장 4. Mysql & Spring boot 연동하기 src - main - resources로 들어가서 application.yml 이라는 새로운 파일을 생성한다. 생성한 후 다음 코드를 복사/붙여넣기 해서 작성해준다. server: port: 8080 spring: datasource: url: jdbc:mysql:/..

프로그래머스 x만큼 간격이 있는 n개의 숫자(c++) [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/12954 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. programmers.co.kr #include #include using namespace std; vector solution(int x, int n) { vector answer; for(int i=0;i (x+x*i) = 2,4,6,8,10이 된다.

프로그래머스 직사각형 별찍기(c++) [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/12969 코딩테스트 연습 - 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수 programmers.co.kr #include using namespace std; int main(void) { int a; int b; cin >> a >> b; for(int i=0;i

백준 1449 수리공 항승 [내부링크]

https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net #include #include #include using namespace std; int main() { int n,l; int cnt=1; cin>>n>>l; int *list = new int[n]; for(int i=0;i>list[i]; } sort(list,list+n); int start = list[0]; for(int i=1;il) //좌우 0.5 간격이기 때문에..

백준 18310 안테나 [내부링크]

https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net #include #include #include #include #include using namespace std; bool com(pair a, pair b) { if(a.second==b.second){ return a.first < b.first; } return a.second < b.second; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);..

백준 19941 햄버거 분배 [내부링크]

https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net #include #include using namespace std; int main() { int n,k; int cnt=0; vectorv; cin>>n>>k; string str; cin>>str; for(int i=0;i

백준 2812 크게 만들기 [내부링크]

https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net #include #include #include #include using namespace std; bool check; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, k; cin>>n>>k; vectorv; //기존 입력 값 숫자 vectorv2;//변경된 결과 값 숫자 string num; cin>>num; for(int i=0;i

백준 2012 등수매기기 [내부링크]

https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net #include #include #include #include using namespace std; int main() { int n; cin>>n; vectorv; unsigned long long sum=0; for(int i=0;i>a; v.push_back(a); } sort(v.begin(),v.end()); for(int i=0;i

백준 9009 피보나치 [내부링크]

https://www.acmicpc.net/problem/9009 9009번: 피보나치 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T 가 주어진다. 각 테스트 데이터에는 하나의 정수 n www.acmicpc.net #include #include #include using namespace std; int main() { int t; int dp[46]; dp[0]=0; dp[1]=1; for(int i=2;i>t; for(int i=0;i>n; for(int j=45; j>=1; j--){ if(dp[j]

Java 클래스 개념 [내부링크]

1.클래스의 개념 자바는 객체지향(object-oriented) 프로그래밍이다. 객체란 실생활에서 우리가 인식할 수 있는 사물이다. 객체의 상태와 행동을 구체화하는 프로그래밍을 객체 지향 프로그래밍이라고 한다. 클래스 객체를 정의하는 틀 또는 설계도를 의미하며, 클래스를 가지고 여러 객체를 생성하여 사용하게 된다. 필드 객체의 상태를 나타냄 , 클래스에 포함된 변수(variable) ex)car.modelname="람보르기니",car.modelYear = 2016 메소드 객체의 행동을 나타냄, 어떠한 특정 작업을 수행하기 위한 명령문이다.=함수 ex)car.accelerate(), car.brake() 인스턴스 메모리에 할당된 객체를 의미한다. -내 차(myCar) : 설계도에 의해 생산된 차량, 친구 ..