전체 글 573

일루미네이션

📍 문제 설명 https://www.acmicpc.net/problem/5547 5547번: 일루미네이션 첫째 줄에 두 개의 정수 W와 H가 주어진다. (1 ≤ W, H ≤ 100) 다음 H줄에는 상근이네 집의 건물 배치가 주어진다. i+1줄에는 W개의 정수가 공백으로 구분되어 있다. j번째 (1 ≤ j ≤ w) 정수의 좌표는 www.acmicpc.net 💡 접근 그림을 보면 건물에서 인접한 6 방향의 벽의 숫자만큼 조명을 장식한다. 주의해야 할 점은 행이 짝수냐 홀수냐에 따라 인접한 6방향의 좌표가 다르기 때문에 짝수/홀수에 맞는 인접한 좌표를 따로 사용해야 한다. 그리고 범위를 벗어나는 경우도 벽으로 인정되어야 하기 때문에 행과 열 길이의 +2 만큼의 배열을 생성했다. 0,0 부터 시작해서 벽인 지점..

Algorithm/baekjoon 2022.07.26

220718-220724

0718(월) 테스트 주도 개발 책 읽기(~138p) 백준 문제 풀기 블로그 포스팅(TCP/UDP) 0719(화) 테스트 주도 개발 책 읽기(~194p) 백준 문제 풀기 블로그 포스팅(HTTP) 0720(수) 테스트 주도 개발 책 읽기(~245p) 백준 문제 풀기 블로그 포스팅(GC) -> 내일까지 마무리 0721(목) 테스트 주도 개발 책 읽기(~300p) 백준 문제 풀기 0722(금) 면접 CS 책 읽기(~2장) 백준 문제 풀기 0723(토) 면접 CS 책 읽기(~4장) 백준 문제 풀기 0724(일) 면접 CS 책 읽기(~6장) 백준 문제 풀기 지원서 작성 지금 나한테 좀 더 필요할만한 책들을 먼저 읽기로 했다! 이번주부터 포스팅을 좀 하고 있는데 더 깊게 알게되는 부분이 있어서 좋은 것 같다. 다른..

TIL/2022 2022.07.24

회문

📍 문제 설명 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 💡 접근 회문이 아닌 경우에 왼쪽 문자를 무시하거나 오른쪽 문자를 무시하여 회문을 확인하는 절차가 필요하다 1. StringBuilder의 deleteChatAt 사용하는 방법 2. 팰린드롬 아닐경우 해당 양 옆의 문자를 제거하여 팰린드롬 재확인하는 방법 StringBuilder의 경우 shift 과정 때문에 메모리를 약 2배 더 잡아먹었다. 👩‍💻 코드 import java.io.*; import java.ut..

Algorithm/baekjoon 2022.07.23

이중 우선순위 큐

📍 문제 설명 https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 💡 접근 문제 의도는 우선순위 큐 2개를 사용해서 풀라는 의도였지만 Treemap을 사용해서 더 편리하게 풀 수 있는 문제였다. firstKey(), lastKey()를 처음 사용해보았다. 👩‍💻 코드 import java.io.*; import java.util.*; public class Main { static boolean[] visited; static ArrayList..

Algorithm/baekjoon 2022.07.21

자바의 Garbage Collection이란?

Garbage Collection Java의 Garbage Collection이란 사용하지 않는 객체를 자동으로 회수하는 기능입니다. 때문에 개발자가 명시적으로 객체를 회수할 필요는 없지만 동작에 대한 관여(튜닝)는 할 수 있기 때문에 여러 GC의 동작에 대해 이해할 필요가 있습니다. GC에 대해서 자세하게 알아보기 전에 'stop-the-world'라는 용어에 대해 알아야합니다. 'stop-the-world'란 GC을 실행하기 위해 JVM(Java Virture Machine)이 애플리케이션 실행을 멈추는 것입니다. 어떤 GC 알고리즘을 사용하더라도 'stop-the-world'는 발생하며 대개의 경우 GC 튜닝은 'stop-the-world' 시간을 줄이는 것입니다. 기본적으로 JVM 메모리는 총 5..

Java 2022.07.21

HTTP란?(HTTP/1.1, HTTP/2, HTTP/3, TLS HandShake)

HTTP(HyperText Transfer Protocol) HTTP는 OSI 7 계층과 TCP/IP 4계층의 응용 계층(Application Layer)에서 데이터를 주고 받는데 사용하는 프로토콜입니다. 보통의 웹개발에서 클라이언트가 HTTP 요청을 보내고 서버가 응답하는 방식으로 동작합니다. 현재 HTTP/3까지 만들어져 있으며 HTTP/0.9 ~HTTP/2 까지는 TCP 기반으로 동작합니다. HTTP/3은 표준화된 것이 2022년 6월 6일이기 때문에 HTTP/1.1과 HTTP/2 버전이 제일 많이 사용되고 있습니다. 버전별 특성은 아래와 같습니다. HTTP/0.9 1. 요청은 GET이 유일합니다. 2. HTTP 헤더가 없습니다. 즉, HTML 파일만 주고 받을 수 있습니다. 3. 상태/오류 코드도..

Network 2022.07.19

TCP, UDP란?

TCP와 UDP는 OSI 7 계층과 TCP/IP 4계층(updated 5계층)의 전송 계층(Transport Layer)에서 데이터를 주고 받는데 사용하는 프로토콜입니다. TCP TCP 3 & 4way HandShake 라는 과정을 통해 서로간 통신을 활성화하고 해제합니다. 그리고 흐름제어, 혼잡제어, 오류제어를 통해 데이터를 정확하게 주고 받을 수 있음을 보장합니다. 이렇게 해서 TCP는 신뢰성 있는 통신이 가능하게 됩니다. 그렇다면 TCP에서 사용하는 3 & 4 way HandShake 라는 것은 무엇일까요? 3way HandShake는 연결을 맺는 과정입니다. 신뢰성있는 통신을 위해 서로간 통신 가능 여부를 확인하여 연결하는 절차입니다. SYN : 'synchronize sequence number..

Network 2022.07.18

220711-220717

0711-0712 면접 준비 0713 면접 보기 + 받은 질문 정리하기 0714 프로그래머스 문제 풀기 0715 프로그래머스 문제 풀기 인적성검사 보기 0716 예전에 못 풀었던 문제들 다시 풀어보기 샘표식품 코딩테스트 보기 0717 KT CLOUD 코딩테스트 보기 + 못 푼 문제 복기해서 다시 풀기 지원서 작성하기 이번주는 면접보고나서 코딩테스트가 2개 잡혀서 준비하는 시간을 가졌다. 코테 보기 전에 레벨 3짜리들 위주로 풀었는데, 편차는 있지만 대체로 많이 어렵긴하다. 그래도 올해 초랑 비교하면 확실히 많이 나아진듯! 아직 결과가 확실하게 나온 곳도 없고 하반기도 슬슬 시작하니까 코딩테스트에 시간을 좀 더 투자하는게 좋을 것 같다!

TIL/2022 2022.07.17

[2022 카카오 블라인드]파괴되지 않은 건물★

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 풀면서 느꼈지만 당연하게 효율성에서 걸렸던 문제다. O(N*M)을 O(1)로 바꾸기 위해서 누적합 개념을 이용해야 했는데 2차원 배열로 확장된 케이스라 어느정도 고려할 부분이 있었지만 1차원 배열에서의 누적합 개념을 제대로 이해하고 있었으면 풀 수 있을 문제였을 것 같다. 누적합 유형도 간혹가다가 출제되는 것 같으니 어느정도 익혀놓는 것이 좋을 것 같다. 👩‍💻 코드 imp..

[2019 카카오 인턴십]징검다리 건너기

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 전형적인 이분 탐색 문제였다. 1. 건널 수 있는 경우에는 건널 수 있는 인원 수 누적해가면서 인원 수를 높여본다. 2. 건널 수 없는 경우에는 인원 수를 낮춰본다. 건널 수 있는지의 여부는 연속된 디딤돌이 k개가 되지 않을 때이다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.i..