목록전체 글 (128)
운동하는 개발자의 메모장

TypeDescriptionExampleint정수형(Integer)1, 100, -3float실수형(소수점이 있는 숫자)3.14, -0.5, 2.0bool논리형(Boolean, 참 / 거짓)True, Falsestr문자열(String)'hello', "0010"list리스트(배열처럼 사용)[1, 2, 3], [0, "one", 3, "four"]tuple튜플(변경 불가능한 리스트)(1, "ab", 3.14, True)dict딕셔너리(Key-Value 쌍으로 저장){"name": "Han", "age": 10}set집합(중복 없는 요소들의 모음){1, "ab", 3.14, True}None아무 값도 없음(Null 개념)None

▶ for 문이란?Iterable(반복 가능한 객체)를 순서대로 하나씩 꺼내면서 block 안의 코드를 반복 실행하는 구조. ▷ Python에서 Iterable 이 아닌 Typeint(정수)float(실수)bool(논리형)None▶ 기본 문법for [변수] in [반복 가능한 객체]: [실행 코드][변수] : 반복마다 꺼내지는 값을 담는 곳[반복 가능한 객체] : 문자열, list, tuple, dictionary, range 등반복 가능한 객체 조건에 따라 [실행 코드] 가 수행된다.문자열 반복# 문자열 선언text = "hello"# 문자열을 순서대로 하나씩 출력한다.for char in text: print(char) 결과hello Iterable Type의 변수만 가능!List 반복# list 선..

2025년 대 AI 시대가 도래했다. 아니 이미 AI는 세상을 지배를 하고 있다. 거의 모든 분야에 장악하다시피 AI가 적용되고 있고, 그 속도는 우리(특히 필자)가 최첨단 기술에서 창출된 새로운 정보를 겨우 바라만 볼 수밖에 없을 정도로 빠르다. 예전에는 정보의 바닷속에서 이리저리 휩쓸린다면 이제는 압도적인 양의 정보 쓰나미에 인지도 못한 체 어느 순간 수장당할 것 같은 느낌이다. 1차 산업혁명은 18세기 후반~19세기 초반에 이뤄줬다. 영국을 중심으로 증기기관과 기계화가 발전한 시기이다. 이동 속도나 생산력이 폭발적으로 성장하게 되었고, 이는 세계화의 발판이 되었다. 2차 산업혁명이 발생한 19세기 후반~20세기 초반에는 전기를 이용한 대량 생산이 이뤄졌으며, 컨베이어 벨트나 전기 모터 따위의 기..

1. 산술 연산자 (Arithmetic Operators) 연산자설명예시+더하기5 + 3 -> 8-빼기5 - 3 -> 2*곱하기5 * 3 -> 15/나누기 (실수)5 / 2 -> 2.5//나누기 (몫)5 // 2 -> 2%나머지5 % 2 -> 1**거듭제곱2 ** 3 -> 8이런,, 기본적인 산술 연산자 부터 자바랑 차이가 있다./, ** 처리를 연산자로만 수행 가능한 게 신기했다. 확실히 편한 언어인 것 같다..2. 비교 연산자 (Comparison Operators)연산자설명예시==같음5 == 3 -> False!=같지 않음5 != 3 -> True>크다5 > 3 -> True작다5 False>=크거나 같음5 >= 3 -> True작거나 같음5 False 3. 논리 연산자 (Logical Oper..

여러 코드를 마주하다보면 Stream이 적지 않게 보이는 걸 알 수 있다. 특히 IO가 많이 발생하는 Client 부분의 코드에서 많이 보였다. 그냥 단순히 반복문을 간결하게 작성하는 기능 선에서만 대충 알고 있었는데, 이번 기회에 알아보기나 하자는 느낌으로 포스팅을 했다. 일단 Stream 을 왜 사용하는 지 부터 궁금했다. 여러 포스팅을 읽어보고 Java 공식 문서도 읽어보았다. 사용하는 이유가 정말 다양했지만 단편적으로 느낀 첫 번째 이유는 많은 양의 병렬 처리가 필요할 때 사용하면 좋다는 것이다. 코드 자체가 간결해져서 가독성이 향상되는 단편적인 장점도 있지만 아무래도 중, 장기적으로는 성능적인 면을 제대로 파악해야 적재적소에 Stream을 사용할 수 있을 것으로 판단했다. 많은 양의 병렬 처리..

문제 설명문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 ..

문제 설명로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순위당첨 내용16개 번호가 모두 일치25개 번호가 일치34개 번호가 일치43개 번호가 일치52개 번호가 일치6(낙첨)그 외로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠습니다. 당첨 번호 6개가 31, ..

문제 설명수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.제한사항마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.completion의 길이는 participant의 길이보다 1 작습니다.참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participant completion return["leo", "kiki", "ede..

자료구조특징추가(ADD) 속도읽기(READ) 속도검색(SEARCH) 속도삭제(DELETE) 속도배열(Array)고정 크기.메모리 연속 저장.인텍스 기반 접근.불가(크기 고정)O(1)O(n)-ArrayList크기 동적 증가.인덱스 기반 접근.O(1)(끝에 추가 시)O(1)O(n)(전체 탐색)O(n)(중간 삭제 시)LinkedList노드 기반 연결 구조.삽입 및 삭제 빠름.O(1)(노드 추가 시)O(n)O(n)O(1)(노드 삭제 시)HashMap키 - 값 기반 저장.해싱 사용으로 빠른 접근.O(1)O(1)O(1)O(1)HashSet유일한 값만 저장.순서 없음.O(1)O(1)O(1)O(1)TreeMap정렬된 키-값 쌍 저장.키를 기준으로 자동 정렬.O(log n)O(log n)O(log n)O(log n)Tr..
2023년 1월 2일에 지금 다니는 회사를 입사했다. 회사에서는 많은 오픈소스를 사용한다. Logstash, Kafka, Redis, Elasticsearch, Docker 등등. 아무것도 모르는 채 입사했다고 해도 과언이 아니다. 물론 아직도 모르는 게 많지만, 그래도 그 당시 내 모습과는 발전했다고 자부할 수 있다. 처음 입사했을 때 IDE로 IntelliJ를 사용했는 데, 디버깅하는 법도 몰라서 사수님께 물어봤었다. 부끄럽지만 그땐 그랬다. 더구나 본인은 명석한 두뇌는커녕 지극히 평범한 수준의 지능이어서 전부를 기억하기가 만무했다. 그래서 2023년에는 사소한 것까지 전부 나름의 문서를 작성했었던 것 같다. 그리고 그때의 문서들이 지금 나를 지탱하는 힘 중에 하나가 되고 있다. 2024년에는 참 다..
Project READMEhttps://github.com/justdoit0730/AutoTR?tab=readme-ov-file#autotr후기 TCP, HTTP Client 통신 기능, Kafka 적재, Elasticsearch indexing, index 정보 확인, Query 사용, TPS에 맞춘 요청 기능, Redis Command 등을 한 번에 수행할 수 있는 웹페이지를 만들고 싶었다. 가볍게 회원가입과, 게시판, 댓글 기능까지 추가했다. UI는 깔끔하게 구현하고 싶었지만, 귀찮다는 이유로 대충 넘긴 부분이 있다. 가이드 없이 바로 사용할 수 있도록 나름 직관적으로 만든 것 같다. 본인은 각 요청이 필요하면 AutoTR을 사용하고 있다. 찾으면 있을 수도 있겠지만 비슷한 콘셉트의 프로그램이 없었..

1. 문제 설명 2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요. 2. 제한사항 dots의 길이 = 4 dots의 원소의 길이 = 2 -256

https://appmaster.io/ko/blog/peurotobeopeuran-mueosibnigga Protobuf란 무엇인가요? | AppMaster Protobuf, 장점과 단점, Protobuf와 JSON의 차이점, 앱에서 구현하는 방법에 대해 알아보세요. appmaster.io 본 게시물은 위 자료를 토대로 작성되었습니다. 목차 [1] Protobuf의 개요 [2] Protobuf의 특징 [3] 결론 [1] Protobuf의 개요 1. Protobuf란? Protobuf는 Protocol Buffers의 약어 Google에서 개발한 데이터 직렬화 형식 : 구조화된 데이터를 이진 형식으로 효율적이고 조밀하게 저장하여 네트워크를 통해 빠르게 전송 가능 다양한 프로그래밍 언어 지원 및 독립적 플랫..

https://www.youtube.com/watch?v=sKWy7BJxIas&t=2524s 본 게시물은 위 영상을 토대로 작성되었습니다. 목차 [1] gRPC의 스트리밍 방식 [2] 개발 순서와 상세 정보 [3] 추가적인 확인 사항 [1] gRPC의 스트리밍 방식 1.1 gRPC의 스트리밍 방식 종류 설명 - 스트리밍은 아니지만 타 스트리밍 방식과 다르기 때문에 첨부 - 가장 단순한 형태 - 클리이언트가 요청을 1번 보내면 서버가 여러 번 보내는 구조 ex) 클라이언트가 어떤 목록 조회 요청 상황 - 목록은 여러 개 존재할 수 있어 서버는 여러 개의 목록을 순차적으로 스트리밍하여 회신할 때 사용 - 클라이언트에서 여러 번 요청을 보내면 서버가 클라이언트에서 받은 정보들을 집계하여 하나의 정보로 회신 -..

https://www.youtube.com/watch?v=sKWy7BJxIas&t=2524s 본 게시물은 위 영상을 토대로 작성되었습니다. 목차 [1] gRPC의 개요 [2] gRPC의 특징 [3] gRPC의 사례 [1] gRPC의 개요 1.1 gRPC의 간단한 설명 다양한 환경에서 실행할 수 있는 고성능 오픈 소스 RPC 프레임워크 : Google 개발 구글이 1주일 동안 띄우는 마이크로 컨테이너의 수 : 20억 구글이 1초 동안 던지는 원격 호출의 수 : 100억 1.2 원격호출(RPC)란? 원격 호출 : RPC(Remote Procedure Call) 원격에 존재하는 함수(Procedure)를 마치 로컬에 존재하는 것 처럼 호출하는 것 원격에 있는 메서드를 호출하는 데 사용하는 호스트(클라이언트) ..

1. Logstash 개요 - ELK stack(Elasticsearch, Logstash, Kibana의 세 가지 프로젝트로 구성된 스택을 의미하는 약어) 중 하나 - 데이터 수집과 가공기능을 제공하는 ETL(Extract(추출), Transform(변환), Load(적재)의 약어) Tool - 로그(비정형 데이터)를 수집 및 분석하고 시스템에서 인식 가능하도록 정제하는 작업에 용이 - 데이터 수집 - 데이터 가공(Logstash) - 데이터 저장(ES) - 분석 및 시각화(Kibana) 2. Logstash의 기능 2.1 Pipeline(파이프라인) - 비정형 데이터를 입력받아 실시간으로 변경하고 이를 타 시스템에 전달하는 역할 : Logstash의 핵심 부분 더보기 - 비정형 데이터(Unstrctu..

1. 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 2. 제한 사항 n은 1 이상, 2000 이하인 정수입니다. 3. 입출력 예 n result 4 5 3 3 4. 입출력 예 설명 - 입출력 예 #1 위에서 설..

ES 게시글 더보기 2023.01.05 - [초보 개발자의 스터디룸] - [Elastic Search] 엘라스틱서치란? 1. 관련 용어 정리, 특징 2023.01.06 - [초보 개발자의 스터디룸] - [Elastic Search] 엘라스틱서치란? 2. 역 색인(Inverted Index) 1. Elastic Search의 장/단점 1.1 장점 - 오픈소스이기 때문에 버그 발생 시 대부분 빠른 해결이 가능 - 정형화되지 않은 다양한 형태의 문서도 색인 및 검색 가능 - 멀티-테넌시(Multi-Tenancy, 단일 소프트웨어 인스턴스. 여러 사용자 그룹에 서비스를 제공 가능한 소프트웨어 아키텍처) 기능 제공 - 상이한 인덱스라도 검색할 필드명이 같으면, 여러 개의 인덱스를 한 번에 조회 가능 - ES를 분..

ES 게시글 더보기 2023.01.05 - [초보 개발자의 스터디룸] - [Elastic Search] 엘라스틱서치란? 1. 관련 용어 정리, 특징 1. 역 색인이란? - 키워드를 통해 문서를 찾아내는 방식 - 색인 : 문서 내 키워드를 확인 용이하도록 정렬/나열한 목록 예) - 색인 방식 문서 번호 단어 1 사과 먹는 다람쥐 2 딸기 먹는 하마 3 복숭아 먹는 다람쥐 4 바나나 먹는 원숭이 5 딸기 먹는 악어 6 복숭아 먹는 원숭이 7 딸기 먹는 다람쥐 8 복숭아 먹는 악어 - 역색인 방식 단어 문서 번호 먹는 1, 2, 3, 4, 5, 6, 7, 8 사과 1 딸기 2, 5, 7 복숭아 3, 6, 8 바나나 4 다람쥐 1, 3, 7 하마 2 원숭이 4, 6 악어 5, 8 즉, 문서에 번호가 지정된 것이..

카프카 게시글 더보기 2023.01.04 - [초보 개발자의 스터디룸] - [Kafka] 아파치 카프카란? 1. 구성요소, 연산방식, 관련용어 1. Apache Kafka 개요 1.1 Apache Kafka란? - 2011년 링크드인에서 개발 및 오픈소스 공개, 현재는 아파치 공식 오픈소스 - 애플리케이션 간 대용량 메세지 교환 목적으로 사용되는 메세징 Queue 시스템 - 실시간 비동기 처리 : 병렬식 테스크 수행, 작업의 종료에 관계없이 다음 동작 실행 가능 - 확장성이 용이한 분산 스트리밍 플랫폼 1.2 Apache Kafka의 장점 1.2.1 확장성(분산 시스템) - 클러스터에 브로커를 추가하는 방식 - 여러 개의 브로커로 구성된 클러스터는 개별 브로커 장애를 처리하여 사용자에게 지속적인 서비스 ..

ES 게시글 더보기 2023.01.06 - [초보 개발자의 스터디룸] - [Elastic Search] 엘라스틱서치란? 2. 역 색인(Inverted Index) 1. Elastic Search 관련 용어 정리 1.1 ES vs RDBMS 1.1.1 기본 용어 정리 RDBMS Elastic Search Database Index Table Type Row Document Column Field Index Analyze Primary Key _id Schema Mapping Physical Partion Shard Logical Partion Route Relational Parent/Child, Nested SQL Query DSL 1.1.2 CRUD 용어 비교 RDBMS Elastic Search Se..

카프카 게시글 더보기 2023.01.06 - [초보 개발자의 스터디룸] - [Kafka] 아파치 카프카란? 2. 개요, 사용 이유, 데이터 모델 1. Kafka의 구성요소 [기본 작동 방식] - Producer는 새 메시지를 Kafka에 전달 - 전달된 메시지는 Broker의 Topic이라는 메시지 구분자에 저장 - Consumer는 구독한 Topic에 접근하여 메시지를 가져옴 1. Producer(프로듀서) - 메시지를 만들어서 카프카 클러스터에 적재 - key값 지정하여 특정 파티션으로만 전송 가능 2. Kafka Cluster(카프카 클러스터) - 카프카 서버로 이루어진 클러스터 [카프카 클러스터의 구성요소] 2.1 Broker(브로커) - 카프카 서버 - Producer와 Consumer사이의 발..

1. 문제 설명 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요. 2. 제한사항 board는 n * n 배열입니다. 1 ≤ n ≤ 100 지뢰는 1로 표시되어 있습니다. board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다. 3. 입출력 예 board result [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0],..

1. 문제 설명 문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요. 2. 제한사항 0 0;i--) { s += before.substring(i-1, i); } if(s.equals(after)) { return 1; }else {return 0;} } } 입출력 예 에서 olleh를 hello와 비교하는 예제가 나와서 완벽하게 오해하였다. before의 역순 값이 after와 비교하여 동일 여부를 확인하는 것이 아니라 before의 스펠링 위치를 각각 바꾸어서 after와 동일한 지를 확인하는 것이었다.. 6. 재풀이 import java.util.*; c..

1. 문제 설명 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요. 2. 제한사항 1 ≤ balls ≤ 30 1 ≤ share ≤ 30 구슬을 고르는 순서는 고려하지 않습니다. share ≤ balls 3. 입출력 예 balls share result 3 2 3 5 3 10 4. 입출력 예 설명 - 입출력 예 #1 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다. - 입출력 예 #2 서로 다른 구슬 5개 중 3개를 고르는 ..