분류 전체보기 607

[프로그래머스, 자바, 1260번] DFS와 BFS

풀이세상에 파이썬으로는 정말 엄청나게 간결하게 할 수 있는 코드인데자바는 역시 코드가 엄청나게 길게 작성되는 것 같다.우선 기본적인 알고리즘 해결 방법은 같다.다만 for문 작성을 줄이고 최대한 stream을 사용해서 가독성을 늘리려고 하니깐다양한 시도를 해보다가 늦게 되었는데우선 새롭게 알게 된 것들에 대해 작성하자면1. Collections.nCopies()에 두 번째 인자로 new ArrayList() 을 넣고 돌리니같은 주소값을 가지는 배열을 똑같이 추가해서 의도한 코드 구현이 안되었다.그래서 IntStream.rangeCloesd() 로 원하는 크기의 배열을 만든 다음mapToObj에서 ArrayList 객체를 lambda 형식으로 새롭게 만들고Collections 타입이기에 .collect(C..

알고리즘 2024.09.05

[프로그래머스, 자바, 84512번] 모음 사전

풀이해당 문제는 자바로 재귀 문제를 해결해보고자 푼 문제로두 가지 방법을 활용하여 해결해봄우선 첫 번째로는 기본적이며 완전탐색하는 방법으로 모든 조합을 만든 다음 같은 문장을 찾는 방법으로 해결했으며두 번째 방법은 join을 활용해서현재 추가된 배열의 값과 같은 문자열을 찾으면 멈추는 방법으로 해결두 가지 방법 모두 재귀와 백트래킹을 활용하여 해결했음다만 계속 return 사용에 대한 혼동이와서 시간이 걸렸지만이제 해결할 수 있을 것 같다.혼동이 온 이유는 파이썬에서는 return에 대한 타입을따로 정의하지 않다보니 어디부분에선 return 만 사용하고어디부분에선 return {정수타입 변수} 로 하다보니갑자기 혼동이 와서 헷갈렸었다. // 첫 번째 방법import java.util.*;class Sol..

알고리즘 2024.09.04

[프로그래머스, 자바, 12911번] 다음 큰 숫자

풀이그냥 단순하게 해결했으며, 문법적인 것으로 알게된 것은2진, 8진, 16진 변경은 아래와 같다.Integer.toBinaryString() -> 2진Integer.toOctalString() -> 8진Integer.toHexaString() -> 16진그리고 파이썬처럼 문자열 안에 특정 문자가 몇 개있는지 찾는 find()와 같은 함수가따로 없는 듯 하여 아래 코드와 같이 해결할 수 있음을 상기 시킴. class Solution { public int solution(int n) { int n_cnt = find(n); int result = 0; for (int i=n+1; i

알고리즘 2024.09.04

[프로그래머스, 자바, 154538번] 숫자 변환하기

풀이해당 문제를 BFS와 DP로 해결해봤는데우선 오랜만에 BFS로 해결하다보니방문 체크하는 것에 대한 기본 개념을 잊어버린 나머지 조금 시간이 걸렸음그리고 DP의 경우엔 범위를 어떻게 지정해야 하나 싶었는데 그저 단순하게 x부터 y까지 지정하되탐색하지 않았을 경우에 대한 조건을 두어 체크를 한다면 쉽게 해결이 가능했다. // BFS 풀이public static int s1(int x, int y, int n) { Queue li = new LinkedList() {{ add(new int[]{x,0}); }}; Set visit = new HashSet() {{ add(x); }}; while (!li.isEmpty()) { int[] no..

알고리즘 2024.09.01

[개발 지식] Cors 해결 방법 (React + TypeScript, Spring Boot)

React1.1 프록시 서버 사용개발 환경에서 CORS 문제를 가장 쉽게 해결할 수 있는 방법은 프록시 서버를 사용하는 것입니다.React 애플리케이션에서 프록시를 설정하면 API 요청이 동일한 도메인에서 이루어지는 것처럼 보이도록 할 수 있습니다.설정 방법: package.json 파일에 프록시 설정 추가// package.json{ "name": "my-app", "version": "1.0.0", "dependencies": { // ... }, "proxy": "http://localhost:8080" // Spring Boot 백엔드 주소}설명: 이 설정은 React 앱이 http://localhost:3000에서 실행 중일 때, API 요청을 http://localhost:808..

개발 지식 2024.08.30

[SWEA, 자바, 1983번] 조교의 성적 매기기

풀이요즘 기본 알고리즘 해결을 위한 언어를 자바로 고정하기 위해SWEA로 기초를 닦으며 이런 저런 공부를 하고 있음.아래 코드는 단순하게 테스트 케이스 만큼 특정 학생의 성적을 조회하는 문제인데뭔가 자바여서 그런지 코드가 더럽긴하다.아래 코드 내용은 별 다른게 없어 해결 방법에 대한 건 생략하지만내림차순 정렬은 Collections.reverseOrder() 메서드로 할 수 있으며,기본 타입 배열을 Collection에 해당하는 배열에기본 값으로 깊은 복사를 하고자 할 땐 Arrays.asList()를 사용하기.그리고 같은 기본 타입 배열에 깊은 복사를 하고자 할 땐 아래의 코드를 사용하기.System.Arrays.copyOf() 첫 번째 인자에는 배열두 번째 인자에는 배열의 길이를 넣기Clone()  ..

알고리즘 2024.08.29

[백준, 자바, 1072번] 게임 (이분 탐색)

풀이해당 문제를 푼 이유는 그냥 이분 탐색 문제여서 풀었으며특징적인 것을 확인했다.확인한 것으로는 무조건 작거나 같은 것을 묶기보단 가변적으로 생각 회로를 열어두는 것이좋을 것 같다는 생각을 했으며, 수학적인 점으로는 분자와 분모가 같은 값으로 더해질 경우 그에 대한 결과 값을 계속해서 커진다는 것. import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] li = Arrays.stre..

알고리즘 2024.08.27

[백준, 자바, 10988번] 팰린드롬인지 확인하기

풀이해당 문제를 푼 이유는정수로 들어온 값을 문자로 변형 후 배열로 만드는 방법에 대해 궁금해서 푼 문제로해결 방법은 아래와 같이 해결할 수 있고 해당 문제는 그 다음의 코드로 해결# 정수를 문자 배열로 변형char[] li = Integer.toString(100).toCharArray(); # 해당 문제 해결 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] li = br.readLine().toChar..

알고리즘 2024.08.27

[개발 지식] 이벤트 버블링(Event Bubbling)

이벤트 버블링(Event Bubbling)은 웹 개발에서 이벤트가 DOM 요소에서 발생할 때,이 이벤트가 상위 요소로 전파되는 과정을 설명하는 개념이다.이벤트 버블링의 작동 원리이벤트 발생: 사용자가 버튼을 클릭하거나 링크를 클릭하는 등 특정 이벤트가 발생한다.이벤트 전파: 이벤트가 발생한 요소(타겟 요소)에서 시작하여, 해당 요소의 상위 요소들로 순차적으로 전파된다.상위 요소 처리: 각 상위 요소는 이벤트를 감지하고, 해당 이벤트에 대한 핸들러를 실행할 수 있다.전파 종료: 이벤트는 최상위 요소인 document까지 전파된 후, 더 이상 전파되지 않는다.이벤트 버블링 예시아래는 이벤트 버블링을 보여주는 간단한 예시 코드이다. Parent Div Ch..

개발 지식 2024.08.26

[개발 지식] 체리픽(cherry-pick)

"체리픽(Cherry-pick)"은 주로 소프트웨어 개발에서 사용되며, 특정 커밋이나 변경 사항을 선택적으로 적용하는 작업을 의미.이 용어는 원래 농업에서 좋은 체리를 골라 수확하는 것에서 유래됨.체리픽의 주요 개념체리픽의 정의:체리픽은 특정한 커밋이나 변경 사항을 소스 코드의 다른 브랜치에 선택적으로 적용하는 작업이다.주로 버그 수정이나 기능 개선을 특정 브랜치에만 적용하고 싶을 때 사용된다.체리픽의 사용 사례:버그 수정: 특정 브랜치에서 버그를 수정하고, 이 수정 사항을 다른 브랜치에도 적용하고 싶을 때.기능 개선: 새로운 기능을 개발 중인 브랜치에서 특정 변경 사항을 안정적인 릴리즈 브랜치에 적용하고 싶을 때.체리픽의 예:Git에서 체리픽: Git에서는 git cherry-pick 명령어를 사용하여..

개발 지식 2024.08.25