본문 바로가기

백엔드122

[Java] 알고리즘 이진 탐색 [Java] 알고리즘 이진 탐색 이진 탐색은 정렬된 데이터에서 특정 데이터를 빠르게 찾는 방법이다 데이터를 정렬을 한다 정렬 후, 중간 인덱스를 찾고, 해당 값이, 구하려는 값과 같은 값인지 본다 찾으려는 값이 더 작다면, 중간 인덱스 기준 왼쪽으로 / 크다면 중간 인덱스 기준으로 오른쪽으로 탐색을 한다 위와 같이 왼쪽 또는 오른쪽 기준에서 중간 지점을 찾고, 중간에 있는 숫자보다 작은지 큰지, 또는 같은지 탐색을 한다 그리고 숫자 하나가 남을때까지 탐색을 한다 (마지막 숫자 하나가 답이 아니면, 찾으려는 숫자가 없는 것이다) // ========== loop문으로 구현 ================= public static int binarySearch(int[] array, int target) {.. 2023. 7. 4.
20230704 [Java] 문제풀이 20230704 [Java] 문제풀이 [프로그래머스] 숫자 짝꿍 두 개의 숫자가 문자열로 주어진다 두 숫자가 공통으로 가진 숫자들을 모아서 제일 큰 수를 만드는 것이다 110, 11110 이면 110이 있어 110이 가장 큰 숫자다 1234, 123456 에서는 1234가 있고 4321이 가장 큰 숫자다 0~9까지, 각각 숫자들의 개수를 넣으려는 배열을 2개 만들었다 하나는 X 수에 대한 배열 하나는 Y 수에 대한 배열 두 배열을 제일 뒷부분에서 순회하면서, 0이 아닐 경우 겹치니깐 두 배열 중 작은 숫자만큼 문자열에 넣어주면 된다 StringBuffer를 사용할 때에는 .toString() 을 이용하면 문자열로 바꿔준다 import java.util.*; class Solution { public St.. 2023. 7. 4.
20230703 [Java] 문제풀이 20230703 [Java] 문제풀이 [Baekjoon 1254] 팰린드롬 만들기 주어진 단어의 인덱스를 순회를 한다 해당 인덱스부터, 단어 끝까지, 팰린드롬이 성사하는지 확인을 한다 aaabab가 주어진다 string.substring(0) - aaabab (팰린드롬이 아님) string.substring(1) - aabab (팰린드롬이 아님) string.substring(2) - abab (팰린드롬이 아님) string.substring(3) - bab (팰린드롬이다) 그렇게 팰린드롬이 주어지면, answer = string.substring(palindromIdx).length() + (palindromIdx * 2); 을 한다 팰린드롬 단어의 길이 + 팰린드롬을 찾기 전 단어의 개수와 팰린드롬을.. 2023. 7. 3.
20230702 [Java] 문제풀이 20230702 [Java] 문제풀이 [프로그래머스] 덧칠하기 페인트 칠을 하는 것이고, 칠해야 하는 구역 section이 주어지고, 한번에 칠할 수 있는 길이 m이 주어진다 여기서, 페인트 칠은, 칠해야 하는 구역은 무조건 칠해야 하고, 이미 칠해진 곳에 덧칠할 수 있다 max 라는 변수를 만들어서, 페인트 칠을 할 수 있는 마지막 구역을 정해준다 max 안에 들어간 구역들은, 한번에 페인트 칠이 될 수 있는 공간이다 section[i] 2023. 7. 2.
[Java] 자료구조 - 트라이 [Java] 자료구조 - 트라이 트리 형태의 자료구조로 문자열을 저장, 삭제, 탐색을 빠르게 하기 위해 만들어졌다 비슷한 문자를 굳이 따로따로 저장할 필요가 없어진다 예) act 와 action을 따로 저장하는 것 보단, action을 저장하고, action 안에 있는 act를 사용할 수 있게 만드는 것이다 단어를 트리에 추가 3가지 상황이 있다 3 가지 상황 모두, 끝의 알파벳을 단어의 마지막인 것을 표시해야 한다 단어가 트리에 아예 없거나, 단어가 다른 하나의 단어에 포함 되어 있을 때 부분 적으로 같은 알파벳을 두 단어가 가지고 있을 때 단어를 트리에서 삭제 트라이 구현 트라이 노드 만들기 트라이 노드에는 현재 노드가 단어의 마지막 알파벳인지 아닌지, 표시할 수 있는 속성을 넣는다 그리고 현재 노드.. 2023. 6. 30.
20230629 [Java] 문제풀이 20230629 [Java] 문제풀이 공원 산책 직사각형 모양의 공원 배열과, 로봇 강아지가 수행해야 하는 명령어가 주어진다 직사각형 모양에는 X (장애물), S (시작점), O (강아지가 갈 수 있는 곳)이 있다 명령어는 "방향, 이동하는칸" 이 주어진다 E 2 : 동쪽으로 2칸 W 1 : 서쪽으로 1칸 N 4 : 북쪽으로 4칸 S 3 : 남쪽으로 3칸 만약 명령어가 주어지는데, 장애물에 부딛히거나, 공원 밖으로 나갈 경우, 명령어를 실행하지 않고, 다음 명령어로 넘어간다 코드는 매우 길지만 간단하다 시작점의 좌표를 찾기 시작점 기준으로 명령어를 하나씩 꺼내보기 만약 현재 좌표에서 명령어를 실행했을 때에 공원 안으로 들어오면, 4번으로 넘어간다 for문을 통해, X, 즉 장애물이 있는지 확인을 해본다 .. 2023. 6. 29.
[Java] 자료구조 - 우선순위 큐 [Java] 자료구조 - 우선순위 큐 우선순위 큐 Queue라고 할 수 있지만, 큐는 먼저 들어온 값이 먼저 나가는 것라고 하면, 우선순위 큐는, 우선순위가 높은 값부터 먼저 나가는 것이다 만약 우선순위가 동일하다면, 먼저 들어온 값이 먼저 나가는 FIFO (First In First Out)이 적용이 된다 우선순위의 Enqueue와 Dequeue는 최소 힙 또는 최대 힙과 같다 자바에서는 PriorityQueue 클래스를 사용하면 된다 Heap으로 작동하는 클래스다 오름차순 PriorityQueue 클래스를 만들고, 만들어진 객체에, 값들을 넣으면 된다 숫자는 기본적으로 오름차순으로 바로 정렬이 된다 문자열이면 숫자 => 소문자 => 대문자 => 한글 순으로 정렬이 된다 import java.util... 2023. 6. 29.
앞으로의 백엔드 공부 계획 앞으로의 백엔드 공부 계획 제로베이스 백엔드 스쿨 매일 배운 내용, 풀었던 문제 정리해서 블로그에 올리기 성실하게 공부하기 다음 주가 되면, 개발을 배운지 딱 1년이 된다. 처음에는 깃헙에 커밋을 매일 하며, 잔디 심기에 빠져서, 매일 공부한 것을 깃헙에 올리거나 풀었던 문제를 커밋을 했다. 특히 개발을 배우면서, 나중에 내 자신이 배웠던 내용을 까먹었을 때에, 알아볼 수 있도록 다시 정리해 놓는 것이 중요하다고 느꼈다. 그렇게 느끼면서 매일매일 배웠던 내용을 내 자신일 잘 알아볼 수 있도록 정리를 했다. 특히, 새로운 코드를, 라인 하나하나 설명하면서 문서화 하는 작업이 익숙해졌고, 추후에 매우 유용하게 쓰이게 되었다. 그렇게 12월 말에, 깃헙보다는, 좀 더 제대로 정리를 하자는 생각에 티스토리에 글.. 2023. 6. 29.
나는 어떤 백엔드 개발자가 되고 싶은가? 나는 어떤 백엔드 개발자가 되고 싶은가? 제로베이스 백엔드 스쿨 풀스택 솔직히 처음 풀스택 개발을 배우면서 많이 혼란했다. 처음 개발을 배우는 입장에서, 백엔드도 재미 있었고 프론트엔드도 재미가 있었다. 이런 이유 때문에, 첫 6개월 교육 과정이 끝나고, 혼자서 공부할 때에 백엔드와 프론트엔드 사이에서 길을 잃어버린 느낌을 받았다. 그렇게 혼자서 4개월이라는 시간 동안 길 잃은 사람처럼 방황을 하다가, 아니다 싶어 취업 시장에 뛰어 들어갔다. 취업 시장에서는 프론트엔드와 백엔드 모두 지원을 했다. (프론트는 바닐라 자바스크립트만 배운 상태였다) 약간 마인드는, "둘 중에 취업한 쪽으로, 회사 다니면서 더 공부해야지" 였다. 당연히 취업은 안 되고, 자신감은 많이 떨어졌다. 백엔드 너무 자신감이 떨어지다 .. 2023. 6. 29.