전체 글

스파게티 코드라도 작성하고보자❗️
카테고리 없음

[프로그래머스] (72416) 매출 하락 최소화

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72416사용 언어 : JAVA내 생각초기 생각푼지 좀 돼서 기억이 안나는데 아마 단순한 dfs로 풀려고 했던 거 같다. 근데 도저히 각이 안나와서 다른 분의 풀이를 참고하였음. 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이분 다른 문제에서도 문제 분석하고 접근 팁 남겨주시던데 진짜 너무 감사함ㅋㅋㅋ 하 이분처럼 되려면 얼마나 많이 풀어야 할까 🥲최종여튼 위글을 요약하자면dfs 탐색. 순서는 후임이 없는 일반 직원(leaf node)에서부터 시작해 CEO(root) 순으로.DP가 필요하다. c..

CS/알고리즘

[알고리즘] 세그먼트 트리(Segment Tree)

정의배열이나 리스트와 같은 데이터의 구간에 대해 빠르게 쿼리하거나 업데이트할 수 있는 자료구조. 주로 다음과 같은 문제에서 사용된다.구간 합 계산: 주어진 구간의 합을 빠르게 구하는 데 유용구간 최소값/최대값 구하기: 특정 구간에서 최소값이나 최대값을 빠르게 찾는 데 사용구간 업데이트: 구간에 대한 값 변경 작업도 효율적으로 처리트리의 리프 노드는 배열의 원소각 내부 노드는 자식 노드들의 값을 합산한 값참고https://book.acmicpc.net/ds/segment-tree 구현세그먼트 트리를 구현할 때 필수적으로 만들어야 하는 함수가 3가지 있다.세그먼트 트리를 생성하는 함수arr[index] 값을 수정하는 함수 (== 트리 leaf node와 그 노드를 포함하는 상위의 모든 node를 수정)arr..

CS/알고리즘

[알고리즘] 이분 탐색이 너무 헷갈릴 때

이분 탐색에 대해서는 다음의 글을 참고: 이분 탐색과 최적화 문제우선 이분 탐색의 큰 틀은 대충 알 것이다.while(l (check(m) 만족에 따라 l, r 어느 쪽의 범위를 좁히느냐는 문제마다 다르니 넘어가고)나만 그런지 모르겠는데 l, r 경계값과 리턴값이 항상 헷갈린다. 뭐 언제는 while(l+1 여튼 내가 헷갈렸던 바리에이션(?)은 사실 모두 맞다. 다만 탐색 범위에 따라 다른 것이다. 정확히는 탐색 범위를 반열림 구간 [L, R)으로 설정하느냐, 닫힘 구간 [L, R]으로 설정하느냐에 따라 다르다.차례로 보자. [ L, R ) (반열림 구간)int l = 0, r = max + 1;while (l 초깃값: l = 최소값, r = 최대값 + 1종료 조건: while(l 범위 이동: l =..

문제 풀이

지피띠니가 알려주는 📝 알고리즘 문제 풀이 & 코드 작성 팁 📝

1️⃣ 문제 이해 & 계획 단계1. 문제 완전히 이해하기입력과 출력 형태 정확히 확인조건과 제약사항, 예제 확인특수 케이스, 경계값, 음수/0 여부 체크2. 변수, 자료구조 미리 계획배열, 리스트, 맵, 우선순위큐 등 어떤 자료구조가 필요한지 결정입력 범위에 맞는 자료형(int/long) 결정3. 간단한 예제 손으로 계산직접 작은 예제로 흐름 확인중간 값, 인덱스, 누적합, DP 값 등을 손으로 계산해보기2️⃣ 로직 설계 단계 (Pseudo Code)1. Sudo / Pseudo 코드 작성“무슨 일을 언제, 어떤 순서로 할지” 간단히 작성예입력 받기누적합 배열 생성모든 구간 탐색하며 최대값 갱신결과 출력2. 주요 연산/루프 확인루프 범위, 중첩 정도, 시간복잡도 예상필요하면 예제와 함께 인덱스 움직임 확..

문제 풀이/알고리즘

[프로그래머스] (92343) 양과 늑대

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92343사용 언어 : JAVA문제 설명2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다.각 노드에 있는 양 또는 늑대에 대한 정보가 담긴 배열 inf..

Backend/Docker

[Docker] 실행 중인 컨테이너 내부에 접속하기

docker exec -it [container id or name] [환경 or 명령어]-i: 표준 입력을 계속해서 유지-t: 가상 터미널을 할당. 이를 통해 컨테이너 내부에서 상호작용할 수 있다.환경: 보통 bash나 (bash가 없는 경우) sh 환경을 사용명령어: 해당 컨테이너에서 실행할 명령어docker exec -it my_container bashdocker exec -it my_container ls -al /var/www

Backend/Docker

[Docker] 생성, 삭제, 조회, 로그 출력 등 자주 쓰이는 도커 명령어 모음

Image다운로드docker pull [image명]:[tag명]dockerhub에 올라와 있는 이미지를 다운받는 명령어tag명: image의 버전을 구분하기 위해 설정한 값. 같은 이미지라도 버전에 따라 여러 태그가 있다. 태그 안붙이면 자동으로 최신 버전의 이미지가 다운로드 됨 조회docker image ls 삭제docker image rm (-f) [image명]-f : 특정 컨테이너에서 사용하고 있는 이미지일지라도 강제로 삭제해준다. (단 중지되어있는 컨테이너여야 함. 실행 중이면 삭제 안됨)만약 같은 이름을 가진 이미지가 여러 개일 경우 image명:tag명 을 정확히 기입하거나 이름 대신 image id 값을 사용하는게 더 안전하다. +) 사용되지 않는 이미지 전부 삭제docker image ..

Backend/Docker

[Docker] Docker를 활용해 NginX 설치 및 실행

1. NginX image 다운로드docker pull nginx 다운받은 이미지 확인docker image ls 이미지 설치docker run --name webserver -d -p 8080:80 nginx--name [컨테이너 이름] : 컨테이너 이름을 webserver로 설정-d : 백그라운드 실행-p [호스트 포트]:[컨테이너 포트] : 호스트의 8080 포트를 컨테이너의 80번 포트에 매핑nginx : 사용할 이미지요상한 키가 나오면서 완료. 2. 로컬 호스트 확인인터넷 프라우저에 localhost:8080을 쳐보면 아래와 같이 nginx 페이지가 뜸더보기사실 원래 강의에서는docker run --name webserver -d -p 80:80 nginx라고 했는데, 이렇게 하니까 localh..

Backend/Docker

[Docker] MAC 환경에서 Docker 설치하기

설치 파일 다운로드⬇️ 도커 공식 홈페이지 Get Started | DockerGet started with Docker Desktop and join millions of developers in faster, more secure app development using containers and beyond.www.docker.com 메인화면에서 바로 다운받을 수 있다.인텔맥이냐 애플 실리콘 맥이냐에 따라 파일이 다르니 참고!! 설치 다운로드가 완료되면 dmg 파일을 실행해서 드래그 앤 드랍accept 클릭recommend 대로 finish 그러면 이렇게 로그인/가입 할 수 있는 창이 뜨는 데 편한대로 해준다. 난 Github 계정이랑 연동함.몇가지 설문조사를 마치면 설치 완료!+) 터미널 연동우측 ..

CS/자바 & 스프링

[Java] Stream.toArray()

Java의 Stream.toArray() 메서드는 스트림의 요소를 배열로 변환하는 데 사용됩니다. 변환할 배열의 타입을 지정하기 위해 메서드 참조 또는 람다식을 사용합니다. 이를 단계적으로 살펴보겠습니다.1. 기본 사용법toArray()는 두 가지 방식으로 사용할 수 있습니다.(1) 기본 배열 반환 (Object[])스트림의 모든 요소를 Object 배열로 변환합니다.Stream stream = Stream.of("A", "B", "C");Object[] array = stream.toArray();System.out.println(Arrays.toString(array)); // 출력: [A, B, C]이 방법은 간단하지만, 반환되는 배열 타입이 Object[]로 고정되므로 타입 캐스팅이 필요할 수 있..

얌얌념념
얌얌 스파게티