분류 전체보기 185

[level 2] 튜플

문제 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 오랜만에 프로그래머스 문제가 풀고 싶어져서 level 2 중에 하나 골라서 풀었다. 처음에 문제를 잘 이해 못해서 이상하게 풀었는데... 다시 문제를 천천히 읽고 다시 풀었더니 쉽게 풀어서 이제 "구현" 문제가 아닌 level2나 level 3를 위주로 풀면 될 것 같다. 이상하게 푼 버전은 다음과 같다. 순서를 고려해야 하는 줄 모르고 무조건 제일 긴 집..

[섹션 2] 스프링 핵심 원리 이해1 - 예제 만들기 (주문과 할인 도메인 설계)

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다. 주문과 할인 도메인 설계 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을수도 있다. (미확정) 도메인 도메인을 살펴보면 "역할과 구현을 분리"했기 때문에 자유롭게 구현 객체를 조립할 수 있게 설계했다. 덕분에 회원 저장소는 물론이고, 할인 정책도 유연하게 변경할 수 있다. 할인 정책과 주문 서비스 구현체 부분만 갈아끼울 수 있음 클래스 다이어그램..

공부/Spring 2022.09.27

[취준 일기] 라인, 카카오 코딩 테스트 후기

오랜만에 코딩 테스트를 봤다. 상대는 라인과 카카오..!! 라인 코테 시간과 금공 필기 시험이 겹쳐서 금공을 포기한게... 아직도 눈 앞에 아른거린다😥 근데 뭐 후회할 것도 아니고 덕분에 카카오 코테도 편하게 치뤘으니 만족한다. 사실 둘 다 가기 힘든 곳이지만 그래도 라인이 더 가능성 있지 않을까 싶어서(직군이 세세하게 나눠져 있고 2차는 CS 필기인 것 등) 기대를 살짝 해봤는데 결과는 처참했다 ㅎㅎ 문제 형태는 SQL 없이 코딩 문제만으로 5문제 / 150분이었는데 나는 2솔을 겨우 했다. 첫 번째 구현 문제는 비교적 빨리 풀었는데 두 번째로 선택한 BFS 문제가 풀릴 듯 안풀려서 계속 시도하다가 시간 다 갔다. 그래도 평소에 코테 스터디 과제도 이렇게 집중해서 풀어본 적이 없는 것 같은데 확실히 실..

자유/주절주절 2022.09.25

[섹션 2] 스프링 핵심 원리 이해1 - 예제 만들기 (회원 도메인 개발과 테스트 코드 작성)

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다. Package 생성 New - Package로 hello.core 밑에 member 패키지를 생성한다. Class 생성 이후 New - Class로 필요한 클래스들을 생성한다. Grade는 BASIC, VIP 두 가지 값 중 하나를 선택하는 Enum 타입으로 작성했다. 마찬가지로 Class와 Interface를 구분하여 생성한다. 아래는 member 클래스를 작성하는 과정인데 IntelliJ는 변수 선언 이후 Constructor를 편하게 생성할 수 있다. alt + insert 단축키를 사용하면 간편하다. 전체(Ctrl + A) 선택 후 OK를 클릭한다. 마찬가지로 Getter와 Setter도 생성해준..

공부/Spring 2022.09.22

[섹션 2] 스프링 핵심 원리 이해1 - 예제 만들기 (비즈니스 요구사항과 프로젝트 설계)

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다. 비즈니스 요구사항과 설계 위와 같은 요구 사항을 보면 회원 데이터, 할인 정책 같은 부분은 지금 결정하지 어려운 부분이다. 그렇다고 이런 정책이 결정될 때까지 개발을 무기한 기다릴 수도 없다. 이런 상황에서 우리는 앞에서 배운 객체 지향 설계 방법을 사용할 수 있다! 인터페이스를 맏늘고 구현체를 언제든지 갈아끼울 수 있도록 설계하면 된다. 참고로 현재는 순수 Java로만 개발을 진행하고 후에 Spring을 적용해본다. 회원 도메인 설계 도메인 협력 관계는 기획자들도 볼 수 있는 그림 아직 저장 방식이 확정되지 않은 상태이기 때문에, 메모리를 사용해서 개발을 진행하기로 결정한다. 간단한 메모리 저장소를 만..

공부/Spring 2022.09.21

[섹션 2] 스프링 핵심 원리 이해1 - 예제 만들기 (프로젝트 생성)

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다. IntelliJ 강사님이 IntelliJ를 사용하신다고 해서 설치했다. 찾아보니 Community(무료)와 Ultimate(유료) 버전으로 나뉘어 있었는데 Spring을 사용하려면 무조건 Ultimate 버전이 좋다고 해서 고민하다가... 학생 인증을 하면 무료로 사용할 수 있다는 블로그를 발견하고 바로 따라했다. 현재 대학생 신분이 아니어도 학교 메일 계정으로 인증만 하면 가능하니까 너무 좋은 혜택!!! 환경 세팅 https://start.spring.io/ 에서 다음 설정으로 Spring Boot 파일을 다운받는다. 초반 강의에서는 스프링을 사용하지 않고 순수 Java로 코드를 짤 것이지만 환경 세팅..

공부/Spring 2022.09.19

[골드 V] 10026번. 적록색약

문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 사용 언어 Python3 풀이 과정 오랜만에 그래프 탐색다운 그래프 탐색 문제를 풀었다. 기본적인듯 생각해야 해서 처음엔 고민 좀 했다가 감은 잡았는데 list랑 함수를 재활용하려다가 엄청 꼬였다...ㅎㅎ 그래서 스터디 팀원들과도 고민해봤는데 재활용하기에 좋은 문제는 아닌 것 같다는 판단을 내리고 오늘 처음부터 다시 풀었다. from collections import deque fro..

[실버 I] 2156번. 포도주 시식

문제 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 사용 언어 Python3 풀이 과정 오랜만에 DP 문제 중에 좀 빠르게 풀었던 것 같다. 문제를 파악하자마자 든 생각은 "나 이거 비슷한거 어디서 풀었는데..?"였고 뒤져보니 예전에 푼 계단 오르기가 거의 유사한 문제였다. 그리고 나서 이 문제를 푸려는데 연속으로 3잔을 마시지 않는 방법을 어떻게 처리했는지 생각이 안 나서 결국 계단 오르기 문제에서 내가 풀었던 답변을 참고했다. from sy..

[섹션 1] 객체 지향 설계와 스프링

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다. Spring이란? Spring은 말 그대로 "봄"이라는 뜻에서 유래했다고 한다. 이야기는 좀 길게 설명해주셨지만 결론은 EJB라는 그 당시 점유율 독점 방식이 굉장히 의존적이고 불편해서 Java의 객체지향 특성을 잘 살리지 못했던... 추운 겨울에 한 줄기 봄처럼 등장한 듯 했다. 스프링은 이제는 위의 모든 기술을 아우르는 개념처럼 불리우게 되었는데 문맥에 따라 다르게 사용된다. 스프링 DI 컨테이너 기술, 스프링 프레임워크, 모두 포함한 스프링 생태계 등 실무를 진행하면서는 필요시 구체적으로 '스프링 세션', '스프링 클라우드' 등으로 특정하여 부른다고 한다. 스프링 프레임워크 핵심 기술 : 스프링 D..

공부/Spring 2022.09.13

[실버 III] 17390번. 이건 꼭 풀어야 해!

문제 https://www.acmicpc.net/problem/17390 17390번: 이건 꼭 풀어야 해! [2, 5, 1, 2, 3]을 비내림차순으로 정렬하면 [1, 2, 2, 3, 5]이다. www.acmicpc.net 사용 언어 Python3 풀이 과정 나는 처음에 이 문제의 설명을 이해하기가 너무 어려웠다... 대체 왜 설명을 저렇게밖에 못했는지 의문이다. 일단 비내림차순으로 정렬한다길래 내림차순이 아닌 수열중에 랜덤을 말하는건가? 했는데 정렬이라는 말이 있어서 결국 오름차순으로 정렬한다는 말이었다. 그리고 다음 설명도 헷갈렸는데 결국 오름차순한 수열의 L번째 인덱스부터 R번째 인덱스의 합을 의미하는 것이었다. 따라서 처음에는 다음과 같이 코드를 짰는데 시간 초과가 났다. from sys imp..

[실버 II] 4096번. 수익

문제 https://www.acmicpc.net/problem/4097 4097번: 수익 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 N이 주어져 있다. (1 ≤ N ≤ 250,000) 둘째 줄부터 N개의 줄에는 매일 매일의 수익 P가 주어진다. (-10,000 ≤ P ≤ 10 www.acmicpc.net 사용 언어 Python3 풀이 과정 간단한 DP 문제이다. 점화식이 쉬운 건 그래도 풀 수 있는 것 같다. 그런데 다른 DP 문제에서 부분합을 구하기 위해 for문을 사용했던 게 생각나서 dp 리스트를 따로 만들고 지금까지의 합과 새로운 값을 더한 값을 비교해 저장하려 했는데 이건 이중 for문을 사용할 필요도, dp 리스트를 따로 만들 필요도 없었다. 그래서 생각..

[실버 I] 14940번. 쉬운 최단거리

문제 https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 사용 언어 Python3 풀이 과정 그래프 탐색 문제였고 문제를 읽어보니 이제 DFS보단 BFS를 사용해야할 것 같은 느낌이 들었다. 물론 DFS로도 풀 수는 있겠지만 풀고 나서 보니 대부분의 사람들이 정말 BFS로 풀었더라! 문제는 되게 짧았는데 코드로 구현하는 방법에 대한 고민과 몇 가지 조건을 처리해주는 방식이 고민됐다. 일단 나는 정답을 기..

[실버 I] 2502번. 떡 먹는 호랑이

문제 https://www.acmicpc.net/problem/2502 2502번: 떡 먹는 호랑이 첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤ A ≤ B)가 존재한다. www.acmicpc.net 사용 언어 Python3 풀이 과정 스터디 시즌3가 시작되고 첫 모임을 위한 두 문제 중 한 문제. 사실 오늘이 모임날인지 오늘 알아서 당황했다. 그래서 시간 부족으로 이 문제를 제대로 풀지 못했는데,, 감사하게도 스터디 시간에 다시 풀어볼 기회가 생겨서 집중해서 뚱땅거려본 결과 버저비터로(?) 문제 풀기에 성공했다! 처음 두 숫자를 A, B라고 할 때 k번째 날의 떡 개수는 A와 ..

[Coursera] Containers 및 Kubernetes 소개

* Coursera, Getting Started with Google Kubernetes Engine 강의 내용입니다. Introduction to Containers and Kubernetes 컨테이너 소개 얼마 전만 해도 애플리케이션을 배포하는 기본 방식은 실제 컴퓨터에 배포하는 것이었다. 앱을 설치하려면 물리적 공간, 전원 냉각 장치, 네트워크 연결을 준비한 후 운영체제를 깔고 소프트웨어 종속 항목을 먼저 설치해야 했다. 처리, 성능, 중복성, 보안, 확장성의 향상이 필요한 경우에는 컴퓨터를 추가해야 했다. 이러한 방식은 리소스 낭비가 크고 대규모 배포와 유지보수에 많은 시간이 소요될 뿐만 아니라 이동하기가 매우 어렵다. 또한 애플리케이션은 특정 운영체제에 맞게 빌드되었고 특정 하드웨어에 맞춰 빌..

[QwikLabs] Google Cloud Console 및 Cloud Shell에 액세스하기

* QwikLabs에서 제공하는 GCP 프로젝트에서 실습한 내용입니다. 1. Google Cloud Console 살펴보기 선택한 프로젝트 확인 Google Cloud Storage로 이동하여 버킷 만들기 1. Google Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > Buckets를 클릭합니다. 2. 버킷 만들기를 클릭합니다. 3. 이름에는 이전 단계에서 복사한 Google Cloud 프로젝트 ID 문자열을 붙여넣습니다. 이러한 실습 안내에서는 [BUCKET_NAME]으로 입력한 이름을 나중에 참고합니다. 4. 계속을 클릭합니다. 객체 액세스를 제어하는 방식 선택을 클릭하고 이 버킷에 공개 액세스 방지 적용을 선택 해제한 후 세분화를 선택합니다. 계속을 클릭합니다. 나..

[실버 II] 1874번. 스택 수열

문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 사용 언어 Python3 풀이 과정 스택은 이제 잘 알고 친숙한 자료형이라고 생각했는데 문제로 풀려니 또 바로 풀리진 않았다. 사실 문제를 이해하는데에도 시간이 좀 걸렸는데 (문제 설명이 불친절한 것 같다) 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓는다는게.. +를 하면 1부터 스택에 들어가고 -를 하면..

[Coursera] Google Cloud 소개

* Coursera, Getting Started with Google Kubernetes Engine 강의 내용입니다. Cloud Computing and Google Cloud 클라우드 컴퓨팅의 다섯 가지 기본 속성 Google Cloud를 비롯한 퍼블릭 클라우드는 이렇게 작동한다. 첫째, 컴퓨팅 리소스가 주문형 및 셀프서비스 방식으로 제공됩니다 클라우드 컴퓨팅 고객은 자동 인터페이스를 사용하므로 사람의 개입 없이 필요한 처리 능력, 스토리지 네트워크를 확보할 수 있다. 둘째, 어디서나 네트워크를 통해 리소스에 액세스할 수 있다. 제공업체에서 대규모 풀의 리소스를 고객에게 할당하므로 고객은 규모의 경제가 주는 이점을 얻습니다 고객은 이러한 리소스의 정확한 물리적 위치를 파악하거나 신경 쓸 필요가 없습..