전체 글 607

[백준, 자바, 14500번] 테트로미노

풀이해당 문제는 어떻게 푸는 방법이 좋을지 고민했을 때각 도형에 따른 변형을 최소화하면서, 기준 좌표로부터이동가능한 좌표 탐색을 4방향을 우선적으로 작성 후 값을 도출하는 것이 좋을 것 같다고 판단.다만, 이러한 노가다가 과연 적절한지 고민해봤는데 나쁘지 않을 듯해서 아래와 같이 작성그리고 무슨 5중 for문으로 해결한 문제는 이번이 처음인듯...그래도 최대한 코드를 가독성 좋으며, 구조적으로 작성하려고 노력하여 아래와 같이 작성.문제 자체는 크게 어려운 건 아니지만, 번거로웠다? 정도였음. import java.io.*;import java.util.Arrays;import java.util.StringTokenizer;public class _14500 { static BufferedReader..

알고리즘 2024.12.16

Docker&Container - Network 2. 컨테이너간 통신

컨테이너간 통신네트워크 생성터미널docker network create 작명ex) docker network create mynet1명령어docker network: 모든 명령어 조회docker network ls: 실행 중인 네트워크터미널에 컨테이너 넣기실행 중인 컨테이너를 넣는 방법도 있지만이미지 생성 시 해당 네트워크에 바로 넣는 방법을 배우고자 함 (더 편리)터미널docker run -d -p 포트 —network 네트워크 —name 작명 실행이미지:태그ex) docker run -d -p 80:80 —network mynet1 —name nginx-container nginx:1 (nginx)ex) docker run -d -p 8080:8080 —network mynet1 —name serve..

Docker&Container 2024.12.15

Docker&Container - Network 1. nginx 만들기

nginx 만들기컨테이너 간 통신하는 방법Reverse Proxy서버로 들어오는 요청 가로채는 프로그램Web Server와 함께 사용할 것임순서클라이언트가 Reverse Proxy로 들어오게 되면Reverse Proxy가 Web Server로 안내사용 이유(장점)서버 정보를 숨길 수 있음https 인증서 설치가 쉬움로드밸런싱 가능로그 남기기IP차단종류NginxcaddyNginx 로컬 설치 및 셋팅NginX 실행 순서Nginx 설치도커를 사용할 것이기에 우선 패스Nginx 설정 파일 작성Docker 폴더에 폴더와 파일 생성ex) nginx/myconfig1.conf이후 nginx 문법에 맞게 설정 코드를 작성해야 함.다만 따로 배운 적이 없기에 아래와 같이 우선 작성간단히 설명하자면listen 80 ← 8..

Docker&Container 2024.12.14

[백준, 자바, 1551번] 수열의 변화

풀이오늘은 간단하게 하나 풀기로 함우선 해당 문제는 단순히 수열이 주어질 때특정 인덱스를 앞 인덱스 값에서 뺀 값을 구하는 수를 구하는 문제이며M번 반복하게 되면 결과로 나오는 값의 개수는기존 N의 길이에서 N-M개로 줄어들기에 그것을 유념하여 풀어야 함또한 결과를 출력 시 ,를 기준으로 출력을 하는 것으로 해결하는 것으로다음과 같이 해결. import java.io.*;import java.util.*;import java.util.stream.Collectors;public class _1551 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer st; ..

알고리즘 2024.12.13

[백준, 자바, 6064번] 카잉 달력

풀이해당 문제는 처음에 무슨 말인가 하고 쭉 보다보니 x,y가 서로 독립적으로 변하는 문제인 것을 확인이후 우선 단순히 1씩 증가하고 M과N위를 벗어날 경우나머지를 활용하여 해결하고자 함.다만 이렇게 하니 시간 초과가 발생...역시나 정답 비율이 낮은 이유는 있다는 것을 느낌그래서 어떻게 해결할 수 있을지 고민하다가뭔가 규칙을 발견하게 됨.우선 아래 코드를 보면입력 값이 10 12 3 9의 경우엔 x를 기준으로 y를 변경 후M만큼 계속 y에 더하고 초과 시 나머지로 변경한다면간단히 해결이 됨입력 값이 10 12 7 2의 경우엔출력이 -1로 나오는 것으로 해결 방법에 대해 고민해 본 결과우선 공통적으로 x가 y보다 작은 값이 들어가도록 조건 처리하기이후 마찬가지로 10 12 3 9 입력 값처럼 연산을 하지..

알고리즘 2024.12.10

[백준, 자바, 5525번] IOIOI

풀이해당 문제를 처음 봤을 때는 substring으로 특정 문자열을 찾으면 되겠구나 했지만이렇게 쉬운데 정답 비율이 낮다는 건, 무슨 의도가 있겠구나 싶었음그래도 우선 시도해보고 그에 따라 변화를 주는 것이 좋을 것 같다고 판단하여그대로 실행했지만 역시나... 50%까지만 정답이후 어떻게 해볼까 고민하다가단순히 I와O의 반복되는 길이를 찾고해당 구간에서 N길이에 따른 문자열의 길이를 카운팅하면 되지 않을까하고알고리즘을 작성한 결과 무난히 통과! // 성공 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffered..

알고리즘 2024.12.10

[백준, 자바, 1389번] 케빈 베이컨의 6단계 법칙

풀이해당 문제는 단순히 데이터 추가 후결과를 찾고자는 곳에 가장 마지막 유저를 제외하고BFS로 찾으며, 조건에 따라 mtx에 단계를 변경하는 것으로 해결내가 작성한 풀이에서 아쉬운 점은 예를 들어 N=5의 경우1번은 모든 사람에 대한 조사를 하기에2,3,4,5번의 모든 1번 mtx가 채워져 있기에2번은 2번은 같으니 제외하고3번부터 5번까지만 찾도록 하고 싶은데이를 어떻게 해결할 수 있을지를 고민해도잘 떠오르지 않아 그냥 마지막 사람을 제외한 모든 사람을 BFS로 탐색하는 것으로 해결...import java.io.*;import java.util.*;public class _1389 { static BufferedReader br = new BufferedReader(new InputStreamR..

알고리즘 2024.12.09

[백준, 자바, 30804번] 과일 탕후루

풀이해당 문제는 뭔가 어려웠다.우선 처음에는 어떻게 해결할 수 있을지 고민하다가누적합으로 해결 할 수 있지 않을까 했는데생각하다보니 20만 배열의 경우엔 너무 반복이 심할 것 같아서고민을 했지만 우선 진행하지만 역시나 시간초과...그래서 아래에 태그를 확인해보니 투 포인터물론 두 개의 인덱스로 어찌어찌 한다는 정도는 알지만어떤 경우에 사용하면 좋은지 이해하고자, 우선 개념을 이해하기로 함.주요 개념 포인터: 배열이나 리스트에서 특정 위치를 가리키는 인덱스입니다. 두 포인터: 왼쪽 포인터와 오른쪽 포인터를 초기화하고, 조건에 따라 이동시키면서 필요한 값을 찾습니다. 시간 복잡도: 보통 **O(N)**으로 동작하며, 완전 탐색(O(N²))에 비해 효율적입니다.투 포인터의 활용 구간 합 문제: 연속된 부분..

알고리즘 2024.12.06

[백준, 자바, 21736번] 헌내기는 친구가 필요해

풀이해당 문제는 간단히 BFS로 해결했으며따로 특별하거나 그런 문제는 아니였음다만 벽이 아닌 사람이 있는 경우에도 해당 위치에 방문할 수 있는지한 번 읽었을 때는 이해가 가지 않아 두 번 읽으니 벽이 아니면 갈 수 있다는 것을 확인하여 간단히 해결. import java.io.*;import java.util.*;public class _21736 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static String[][] mtx; static boolean[][] visit; static Deque dq = new ArrayDeque(); public static void ..

알고리즘 2024.12.06

[백준, 자바, 17626번] Four Squares

풀이해당 문제는 최소 개수의 제곱수로 임의의 값을 찾는 문제로어떻게 해결해야할지 고민을 한 결과, 임의의 값의 sqrt까지 모든 제곱수를 구한 다음재귀로 모든 경우를 찾아보자라고 결정함.다만 0.5초라는 시간 제한이 있었기에, 뭔가 뭔가 했지만 그냥 해봄그런데 처음에 그냥 무의식적으로 visit 체크를 해서중복하여 같은 것을 더하지 못하도록 함.그래서 계속 87퍼쯤에서 멈추길래이후엔 방문체크를 하지 않고 해결하게 됨.그리고 중간에는 계속 끝에서부터 처음까지 탐색하도록 했어서시간초과가 발생하길래, 현재 위치부터 조회하도록 하여시간 효율을 줄여 해결할 수 있었음. import java.io.*;import java.util.*;public class _17626 { static List li = new..

알고리즘 2024.12.05