728x90

Java 177

[Grind75-LeetCode] Diameter of Binary Tree JAVA

[Grind75-LeetCode] Diameter of Binary Tree - Easy Diameter of Binary Tree - LeetCode접근재귀풀이주어지는 이진트리의 최대 지름을 구하는 문제이다. 지름이란 양쪽 서브트리 노드 깊이를 더한 것과 같다고 보면 되는데 문제에서 최대 지름은 루트 노드를 지날 수도 있고 지나지 않을 수 도 있다고 나와있다. 루트 노드를 지나지 않고 최대 지름이 어떻게 되는지 잘 이해가 가지 않지만 아무튼 구하면 된다. LeetCode의 문제는 배열의 형태로 값이 주어지는 타 사이트와 다르게 객체 참조 형태로 주어지기 때문에 재귀나 반복을 사용해야 하는 문제가 대부분이다. 이번 문제 또한 재귀를 통해 풀어진다. private int diameter = 0; ..

카테고리 없음 2024.10.12

[Grind75-LeetCode] Add Binary JAVA

[Grind75-LeetCode] Add Binary - Easy접근진수 변환정석 덧셈 구현(?)풀이문자열로 주어지는 이진수를 덧셈 연산을 수행한 뒤 이진수 값을 다시 문자열로 반환하는 문제이다. 자바의 경우 문자열로 이루어진 각 진수 변환 메서드를 기본적으로 제공하다 보니 사실 통과 자체는 굉장히 쉬운 문제이다. 그런데 주어지는 이진수의 최대 길이가 10000자리로 long 타입을 사용해도 오버플로우가 발생한다. 자바의 BigInteger 라이브러리를 사용해 주면 푸는데 문제는 없으나 처참한 성능을 자랑했다.//BigInteger 사용 코드import java.math.BigInteger;class Solution { public String addBinary(String a, String b) ..

[Grind75-LeetCode] Longest Palindrome JAVA

[Grind75-LeetCode] Longest Palindrome - Easy 접근구현풀이주어진 문자열 s를 이용해 가장 긴 펠린드롬 문자의 길이를 구하는 문제이다. 소문자와 대문자 알파벳이 주어지고 각각 다른 문자로 취급하게 된다. 총 알파벳 52개를 사용해 가장 긴 펠린드롬의 길이를 구해야 한다.  가장 긴 펠린드롬 문장을 모두 찾아라와 같은 문제였다면 귀찮았겠지만 길이를 구하는 문제이기 때문에 단순하게 구할 수 있다. 펠린드롬이란 앞으로 뒤로 읽어도 똑같은 문자를 말하는데 그러기 위해선 가운데를 기준으로 양쪽이 같아야 한다. 그 말은 알파벳의 수가 최소 2개 이상이어야 하고 모든 짝수개의 알파벳을 사용한 뒤 홀수개의 알파벳이 존재한다면 가운데로 끼워 가장 긴 길이를 구할 수 있다.  pub..

[Grind75-LeetCode] Linked List Cycle JAVA

[Grind75-Leetcode] Linked List Cycle - EasyLinked List Cycle - LeetCode접근플로이드의 토끼와 거북이(Floyd's Tortoise and Hare)풀이노드가 연결된 리스트에 사이클이 존재하는지 알아내는 문제이다. 해당 사이트의 다른 문제들과 같이 배열이나 리스트 형태의 값이 주어지는 게 아닌 노드가 다음 노드의 값을 들고 있는 형태로 루트 노드 하나가 입력으로 주어진다. 편법으로 문제를 열심히 풀어왔던 나로서는 현재 노드의 값과 다음 노드의 값을 set에 저장한 뒤 똑같은 값이 나오면 한 바퀴를 돌았다는 말이니 true를 반환하면 되지 않을까? 하는 생각으로 풀어봤다. 그러나 노드 객체가 달라도 값이 같은 경우가 있고 예시 설명을 볼 땐 배열에 값이..

카테고리 없음 2024.10.09

[Spring] Actuator

Spring Boot - Actuator애플리케이션의 운영 상태를 모니터링하고 관리할 수 있는 다양한 기능을 제공하는 모듈주로 프로덕션 환경에서 애플리케이션의 상태를 확인하고, 메트릭을 수집하며, 로그를 추적하고, 설정을 점검하는 데 사용주요 기능1. 헬스 체크 (Health Checks) 애플리케이션의 건강 상태를 확인할 수 있는 엔드포인트를 제공데이터베이스, 메시지 브로커, 캐시 등 다양한 의존성의 상태를 체크할 수 있음/actuator/health 엔드포인트를 통해 접근상태 반환UP: 애플리케이션이 정상적으로 작동하고 있는 상태DOWN: 애플리케이션이 작동하지 않는 상태 OUT_OF_SERVICE: 애플리케이션이 현재 요청을 처리할 수 없는 상태 -> 서비스가 비활성화 상태인 경우UNKNOWN: 애..

백엔드/Spring 2024.10.08

[Grind75-LeetCode] Merge Two Sorted Lists JAVA

[Grind75] Merge Two Sorted Lists - Easy접근구현풀이새로운 알고리즘 문제 사이트 풀이를 시작했다. 유명하다는 Leetcode의 문제를 75개의 주요 문제로 구성해 제공하는 사이트로 주차별로 문제를 나눠 풀 수 있게 도움을 준다. UI도 깔끔하고 프로그래머스의 상위호환 같은 환경을 제공해주는거 같다. 한 가지 아쉬운점은 아무래도 영어로 된 사이트이다 보니 문제 이해에 시간이 좀 걸리는 편이다. 처음 쉬움 단계의 문제를 몇 개 풀다가 느꼈는데 백준으로 치면 실버 저티어의 난이도는 되는게 아닌가 싶은 진짜 쉬움(?)이 아닌 상대적 쉬움 난이도인거 같다. 그렇다고 어려운건 아니지만 이게 쉬움이면 나중에 어려움 난이도는 어떤 문제들인가 싶다.  그래서 이번 문제는 연결된 노드가 리스트..

[백준] 가장 긴 증가하는 부분 수열 JAVA

[백준] 가장 긴 증가하는 부분 수열 - SILVER II 11053번접근dp풀이주어지는 숫자들 중 증가하는 가장 긴 수열의 개수를 찾아내는 문제이다. 처음 문제를 보고 한 생각은 따로 정렬된 배열을 두고 정렬된 숫자를 원본 배열에 매칭시키며 개수를 구하면 되는 게 아닌가 했는데 수열에 위치할 다음 숫자를 무조건 골라야 하는 게 아닌 스킵하고 넘어갈 수 있으므로 사용할 수 없는 방법이었다. 이 문제처럼 보통 바로 다음만 고려하는게 아닌 뒤의 경우도 고려해야 하는 조건인 경우 dp를 사용하면 해결할 수 있다. 동적 배열을 이용하여 각 단계별 가장 긴 경우의 길이를 구해 차근차근 쌓아가는 것이다. 앞의 최댓값들을 활용해 늘려나가는 bottom-up 방식이기 때문에 각 인덱스까지의 부분수열의 최대 길이를 구할..

[백준] 최소비용 구하기 JAVA

[백준] 최소비용 구하기 - GOLD V 1916번접근플루이드-워셜 (시간 초과)다익스트라 (Dijkstra's Algorithm)풀이N개의 도시에서 출발하는 M개의 버스를 통해 목표로 주어진 출발지에서 목적지까지 가는데 드는 비용의 최솟값을 구하는 문제이다. 이 문제는 가중치가 있는 방향 있는 그래프에서 최단 경로의 가중치를 구하는 문제이다. 저번에 풀었던 경로 찾기 문제에서 간단하게 설명했던 플루이드 워셜 알고리즘을 사용해서 풀려고 했으나 N의 최댓값이 1,000으로 플루이드-워셜 알고리즘을 사용할 경우 최악의 경우 10억의 연산이 발생해 주어지는 0.5초의 제한 시간 내 통과는 불가능하다. 플루이드-워셜은 모든 경로의 가중치를 다 구하다 보니 이번 문제에선 사용할 수 없는 방법이었다. 전체 코드 부..

[백준] 적록색약 JAVA

[백준] 적록색약 - GOLD V 10026번접근bfs풀이Red, Green, Blue 세 가지 색이 주어지는데 일반인의 시선으로 봤을 때 나눠지는 색 구역 개수와 적록색약을 가진 사람이 봤을 때 나눠지는 색 구역 개수를 구하는 문제이다. 대체적으로 실버1~골드5 난이도 구간에는 bfs를 사용하는 문제가 참 많은거 같다. 물론 이 문제도 bfs를 사용한 문제로 이전에 풀었던 단지번호 붙이기 문제의 코드를 인용해 수정하여 풀었다.2024.09.26 - [알고리즘/코딩테스트-백준] - [백준] 단지번호 붙이기 JAVA [백준] 단지번호 붙이기 JAVA[백준] 단지번호 붙이기 - SILVER I 2667번2667번: 단지번호붙이기 (acmicpc.net)접근bfs풀이2차원 배열로 주어지는 지도를 탐색하며 붙어..

[TOY] 게시판 프로젝트 개요

[TOY] Project - Board1. 프로젝트 개요학습 목적의 TOY 프로젝트로 게시판 제작을 시작하게 되었습니다. 기본적인 게시판의 기능인 조회, 검색, 댓글 기능이 가능하고 회원, 비회원 모두 게시글 및 댓글 작성이 가능하며 게시글 추천수에 따른 인기글 게시판 기능을 제공합니다.2. 요구사항 분석게시판 제작에 필요한 기본적인 요구사항들을 정리하여 분석하였습니다. 기능 요구사항회원 관리회원 가입: 사용자는 가입 시 기본적으로 일반 회원으로 등록역할 지정: 관리자가 일반 회원을 매니저로 지정 가능관리자 계정: 관리자는 가입이 불가능하며, 초기 개발자가 생성한 계정으로만 존재게시글 관리게시글 작성: 비회원: 게시글에 표시될 이름과 비밀번호를 지정하여 게시글 작성 가능회원: 로그인 시 회원 이름으로 게..

728x90