틀린 부분 또는 더 효율적인 접근법에 대해 피드백 주시면 감사하겠습니다! 17070 파이프 옮기기 1 문제 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 3가지 방향이 가능하다. 파이프는 매우 무겁기 때문에, 유현이는 파이프를 밀어서 이동시키려고 한다. 벽에는 새로운 벽지를 발랐기 때문에, 파이프가..
알고리즘 문제를 풀기 시작하면서 단순히 풀고 끝내는 식으로 하니 배우는 느낌, 내 것으로 만드는 느낌이 들지 않았다. 그래서 이제 블로그 등을 통해 정리하면서 하나 하나 내 것으로 만들어 나가야겠다. 틀린 부분 또는 더 효율적인 접근법에 대해 피드백 주시면 감사하겠습니다! 16637 괄호 추가하기 문제 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다. 수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 하나만 들어 있어야 한다. 예를 들어..
알고리즘 문제를 풀다보면 단순히 하나의 값만으로 정렬하는 경우가 아닌, 2개 이상의 값으로 정렬해야하는 경우가 생긴다. 하나의 값으로 정렬하는 경우, key(정렬 기준 값)을 명시 하지 않거나 또는 하나의 값만을 명시해줌으로써 가능했다. sorted(data) # OR data.sort() sorted(data, key=lambda x: x[0]) # OR data.sort(key=lambda x: x[0]) 두개 이상의 값으로 정렬하는 경우, key 값을 다음과 같이 튜플 형태로 엮어 넣어주면 된다. data = [[1, 2], [2, 3], [1, 4], [3, 0]] data = sorted(data, key = lambda x: (x[0], x[1])) # [[1, 2], [1, 4], [2, 3..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bP7Y3m/btqUcBAkO8C/ApE8P9BGVoKdyxgyNIXs4K/img.png)
개발을 하다보면 버전관리, 협업, 포트폴리오 등의 이유로 Github을 사용하게 된다. 기본적으로 프로젝트마다 Repository를 만들고 운영을 하고, 개발 파일들을 올리면 다음 그림처럼 자동으로 파일들의 언어들을 분석해서 어떤 개발 언어 프로젝트인지 볼 수 있도록 제공하고 있다.. 하지만 웹 서버라던지 모바일 어플리케이션 등 주 개발언어가 아닌 파일들도 올려야하는 경우들이 존재하고 그러한 파일들의 코드가 대부분의 코드를 차지하게 됨으로써 다른 개발언어 프로젝트로 표시되는 경우가 있다. 예를 들어 웹 서버를 개발하는 프로젝트인데, 클라이언트 html 코드가 너무 많아 html 프로젝트로 표시되는 경우도 있다. 이처럼 원하지 않는 언어로 표시되는 문제를 해결하기 위해 github에서는 `.gitattri..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cbhaSY/btqUmIxE7vr/jlcGlD4ShfgoWFTCtJdnJK/img.png)
그냥 내가 잊지 않기위해 작성하는 포스트. 2년만에 다시 공부하는 Java. Type casting부터 애를 먹기 시작했다. 생각해보면 언어별 Type casting을 하는 방식이 다 다르다는 것을 인식해서, 그걸 좀 정리해보고자 한다. Type casting에 대해 깊게 파고들면 명시적, 암묵적 형변환으로 나뉘며 많은 이야기들이 나오는데 그런 깊은 내용들은 나중에 다뤄보기로 하고 여기서는 단순히 명시적 형변환을 하는 법에 대해 다뤄보고자 한다. 또한, 여기서는 단순히 숫자 문자 데이터를 숫자로 바꾸는 것이 아닌 말 그대로 문자를 아스키코드 형 숫자로 바꾸는 것을 이야기한다. 일단, 나는 Python, Javascript(Node.js), C++를 최근 다뤄오고 있다. 그래서 인지 몰라도, 아무튼 다음과..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cPZDbx/btqUhzIgISP/FXtwHVR2KiYOpoYPJxUQU0/img.png)
왜 Slack bot ? 회사, 개발 프로젝트를 진행하다보면 협업 툴로서 Slack을 많이 사용한다. Slack을 사용하다보니 여러 회사의 slack 활용법을 볼 수 있었는데, 그 중 스포카 기술 블로그에서 언급한 사례들이 정말 흥미로웠고 만들어보고 싶다는 마음이 생겼다. 슬랙봇, 어디까지 만들어봤니? 스포카의 슬랙봇 활용법 엿보기 spoqa.github.io 그래서 알아보니, Slack 자체에서도 많은 슬랙봇을 지원하기도 하고, 스포카 블로그에서 말하듯 지원하는 외부 어플리케이션들도 많았다. 하지만 단순히 이런 것들을 활용하기보다, 직접 코드로 만들 수 있는 방법은 없을까 하던 중 python으로 slack bot을 만들 수 있는 slacker 라이브러리를 찾았다. os/slacker Full-feat..
프로젝트를 하며 단순히 결과물을 만들어내는 것에 찌들어 살다보면 그 내부적인 원리는 모른 채 누군가 만들어 놓은 것들을 활용하고만 있는 나를 발견하곤 한다. 그런 나를 내부적인 원리 지식들과 기초적인 CS 지식들로 하여금 채찍질하기 위하여 이렇게 차근차근 조그마한 것들을 적자. 컴파일 Compile 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정 다시 말해, 개발자가 이해할 수 있는 프로그래밍 코드들을 컴퓨터가 이해할 수 있도록 기계어로 변환하는 작업을 의미한다. 이러한 작업을 해주는 프로그램을 컴파일러(Compiler)라고 한다. Java의 경우, JVM(Java Virtual Machine)에서 실행 가능한 바이트 코드 형태의 클래스파일이 생성된다. 링크 Link 분리된 소스파일들을 컴파일 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/tmkV7/btqUhAga0Wj/iwmIrkS2BqYhiWESjTk5m1/img.png)
"웹 서버와 웹 어플리케이션 서버의 차이를 아시나요?" 이번 면접의 질문이었다. 서버공부를 한지 오래되지 않은 나로서 매우 기본적인 백엔드 개발자 면접 질문임에도 답할 수 없었다. 면접이 끝나고, 검색해보며 내 자신이 너무 부끄러웠다. 다시 공부해보자 라는 마음에서 이렇게 작성한다. 이 둘의 개념과 차이를 알아보기 이전에 Static pages, Dynamic pages에 대해 알아볼 필요가 있다. Static pages - image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미한다. - 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환한다. (말 그대로 정적인 컨텐츠) - 웹 서버에서 제공한다. Dynamic pages - 들어온 요청..
- Total
- Today
- Yesterday
- container
- WebFlux
- 로그
- k8s
- 일상
- Spring
- 클린 아키텍처
- 알고리즘
- 비동기
- MySQL
- 쿠버네티스
- Kubernetes
- HTTP
- Spring boot
- java
- Algorithm
- Istio
- c++
- Intellij
- 하루
- python
- OpenTelemetry
- gradle
- docker
- boj
- Log
- Clean Architecture
- 백준
- tag
- jasync
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |