본문 바로가기

분류 전체보기383

20230913 [Java] 문제풀이 20230913 [Java] 문제풀이 [프로그래머스] 문자열 압축 입력되는 문자열을 압축하는 것이다 단 문자 단위는 같아야 하고, 연속되는 문자가 같으면 압축을 한다 class Solution { public int solution(String s) { int answer = s.length(); if (s.length() == 1) return 1; for (int i = 1; i = 2) { comString += String.format("%d", cnt); } comString += tempS; tempS = tempCompare; cnt = 1; } } if (cnt > 1) comString += String.format("%d", cnt) + tempS; else comString += te.. 2023. 9. 13.
[Java] Linux [Java] Linux 서버에 적합하고, 무료 Open Source 소프트웨어다 Linus Torvalds 라는 사람이 이 Linux OS를 만들었다 Linux는 Linux Kernel (리눅스 커널) 자체를 의미한다 커널은 CPU나 RAM을 포함한 컴퓨터 자원을 관리하고 할당하는 중요한 코어 소프트웨어다 이 Linux를 기반으로 커스터마이즈 된 OS를 만들 수 있다 Linux 계열에는 RedHat, Ubuntu, Debian이 있다 리눅스 커널은 아래와 같은 디렉토리 구조를 가지고 있다 Docker를 이용해서 리눅스 사용하기 Linux 명령어 상대 경로 vs 절대 경로 상대 경로 : 현재 파일의 위치에서의 경로 절대 경로 : 최상위 위치에서의 경 ./ 현재 위치 ../ 현재 위치에서 한단계 상단 위치 .. 2023. 9. 12.
20230912 [Java] 문제풀이 20230912 [Java] 문제풀이 [프로그래머스] 스킬 트리 기술을 배우기 위해, 앞에 미리 배워야 하는 기술이 있다 A -> B -> C : C를 배우려면 B를 배워야 하고, B를 배우려면 A를 배워야 한다 즉 A를 배우고 바로 C를 배울 수 없다 그 외에 주어진 것들은 언제든 배울 수 있다 Queue에다가 순서대로 배워야 하는 기술들을 넣는다 (skill들) skill_trees를 순회하면서, Queue 대로 즉 선입선출 로직으로 기술들을 배우는지 확인을 한다 skill = {A, B, C} skill_trees = {B, C} B는 skill에 있지만, 먼저 배워야 하는 A가 있기 때문에 기술을 배울 수 없다 import java.util.*; class Solution { public int .. 2023. 9. 12.
[Java] Docker [Java] Docker 서비스 배포란? 코드로 구현하고, 결과는 콘솔 또는 로컬 호스트를 통해 결과를 확인한다 즉 다른 사용자들을 위한 실제 서비스가 되기에는 부족하다 즉 이 코드들이 다른 사용자들이 이용할 수 있도록 배포가 되어야 한다! 다른 사람들이 개발자들이 만든 코드를 사용할 수 있게 만드는 것이 서비스 배포다 개발자들이 만든 코드를 실행 가능한 형태로 서버 컴퓨터로 옮긴다 그럼 사용자들은 서버 컴퓨터를 통해, 개발자들이 만든 코드를 사용하게 된다 온프레미스 (On-Premise) : 자체 서버가 있는 경우 비용이 굉장히 많이 든다 (설치 비용 + 유지 비용 + 인력까지) 클라우드 : 다른 제 3자가 만들어 놓은 서버를 원격으로 빌려서 사용하는 것이다 예) AWS 대어료를 클라우드 사용자 입장에.. 2023. 9. 11.
20230906 [Java] 문제풀이 20230906 [Java] 문제풀이 [프로그래머스] 메뉴 리뉴얼 문자열을 리스트로 잘 만들고, 2중 리스트에서, 리스트 크기에 따라서 정렬을 한다 {2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}} 2 를 answer에 제일 앞 부분에 넣는다 (2) {2} 와 {2, 1} 을 비교하여, 없는 숫자를 answer에 넣는다 (1) {2, 1}와 {2, 1, 3} 을 비교하여, 없는 숫자를 answer에 넣는다 (3) {2, 1, 3}와 {2, 1, 3, 4} 을 비교하여, 없는 숫자를 answer에 넣는다 (4) import java.util.*; class Solution { public ArrayList solution(String s) { ArrayList answer = new Ar.. 2023. 9. 8.
20230905 [Java] 문제풀이 20230905 [Java] 문제풀이 [프로그래머스] 괄호 회전하기 .substring 을 이용해서, 문자열을 슬라이싱 하면서 문자열을 한바퀴 돌린다 한바퀴 돌리면서 stack을 사용하여 괄호 문자열이 유효한지 확인해준다 import java.util.*; class Solution { public static boolean isCorrect(String str) { Stack stack = new Stack(); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '(' || str.charAt(i) == '[' || str.charAt(i) == '{') { stack.push(str.charAt(i)); } else { if (stack.i.. 2023. 9. 8.
20230904 [Java] 문제풀이 20230904 [Java] 문제풀이 [프로그래머스] 거리두기 확인하기 P들의 위치를 찾고, P들을 비교를 한다 먼저 맨해튼의 거리를 비교한다 2 이하면, 두 개의 P들이 가로 또는 세로 상에 있으면 1맨해튼 거리가 1이면, 거리두기를 못 하는 것 2맨해튼 거리인데, 중간에 패티션이 없으면 거리두기를 못 하는 것 대각선에 있으면, 반대쪽 대각선에 모두 패티션이 없으면 거리두기를 못 하는 것이 import java.util.*; class Solution { public static boolean socialDistance(String[] places, ArrayList pLocation) { boolean isPossible = true; for (int i = 0; i < pLocation.size().. 2023. 9. 8.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다음에 같은 데이터에 접근할 때, 더 빠르게 데이터를 조회할 수 있도록 한다 예) 어제 배웠던 내용을, 저번 주에 배웠던 내용보다 더 빠르게 기억할 수 있다 캐시를 정할 때, 얼마나 요청이 많이 들어오는지 확인해보는 방법도 있다 유저가 요청을 할 때마다, 데이터를 생성해야 하나? 미리 데이터를 생성해 놓고, 유저들이 그 데이터를 조회하는게 더 빠르다 캐시를 삭제해야 하는 이유 업데이트가 될 시에, 캐시의 데이터도 없어야 한다 캐시는 무한정 메모리가 아니다 (한번씩 비워줘야 한다) 캐시에는 TTL이 있다 Time To Li.. 2023. 9. 5.