전체 글 180

스레드

1. 프로세스와 스레드프로세스 vs 스레드프로세스: 운영체제로부터 자원을 할당받는 작업의 단위스레드: 프로세스가 할당받은 자원을 이용하는 실행 단위프로세스프로세스는 실행 중인 프로그램을 의미한다OS 위에서 실행되는 모든 프로그램은 OS가 만들어 준 프로세스에서 실행된다프로세스 구조OS가 프로그램 실행을 위한 프로세스를 할당해 줄 때 프로세스 안에서 Code, Data, 메모리 영역(Stack, Heap)을 할당해준다Code는 Java main 메소드와 같은 코드를 말한다Data는 프로그램이 실행 중 저장할 수 있는 저장공간을 의미한다전역변수, 정적 변수 등 초기화 된 데이터를 저장하는 공간Memory 메모리 영역Stack: 지역변수, 매개변수 리턴 변수를 저장하는 공간Heap: 프로그램이 동적으로 필요한..

Java 2024.05.20

git 명령시 한글이 숫자로 보이는 문제

한글이 숫자로 보이는 문제MAC os에서 git을 이용하던 중 한글이 숫자로 변해서 보이는 문제가 생겼다.  문제 해결이를 해결하기 위해 다음 코드를 입력한다.git config --global core.quotepath false 이후 한글이 정상적으로 보이는 걸 확인할 수 있다.  공식 문서git 문서에 다음 내용을 참고해보자.  참고http://git-scm.com/docs/git-confighttp://git-scm.com/docs/git-config Git - git-config DocumentationWhen using the deprecated [section.subsection] syntax, changing a value will result in adding a multi-line ke..

git 2024.05.20

git cache 삭제

캐시 삭제.gitignore에 폴더나 파일을 추가했지만 반영이 안 되는 경우가 있다.이럴 때 cache를 삭제해 문제를 해결할 수 있다.아래와 같은 명령어로 캐시 삭제를 수행한다.git rm -r --cached .git add .git commit -m "캐시 삭제"  또는 다음과 같이 한 파일만 cache를 삭제한다.git rm --cached FILENAME  공식문서다음과 같이 공식문서를 보면 명령어를 확인할 수 있다. 해석은 다음과 같다더보기gitignore 파일의 목적은 Git에서 추적하지 않는 특정 파일이 추적되지 않은 상태로 유지되도록 하는 것이다현재 추적 중인 파일의 추적을 중지하려면 git rm --cached를 사용하여 인덱스에서 파일을 제거한다그런 다음 파일 이름을 .gitignor..

git 2024.05.19

자동 구성(Auto Configuration)

해당 게시물은 인프런 - "스프링 부트 - 핵심 원리와 활용" 강의를 참고하여 작성한 글입니다유료강의이므로 자세한 내용은 없고, 간단한 설명 위주로 정리했습니다강의 링크스프링 부트의 자동 구성스프링 부트는 자동 구성(Auto Configuration) 기능을 통해 일반적으로 자주 사용하는 많은 빈들을 자동으로 등록해 준다spring-boot-autoconfigure라는 프로젝트 안에서 수많은 자동 구성을 제공한다JDBCTemplate을 설정하고 빈으로 등록하는 자동 구성은 다음과 같다@AutoConfiguration( after = {DataSourceAutoConfiguration.class})@ConditionalOnClass({DataSource.class, JdbcTemplate.class}..

스프링 부트 2024.05.19

프로그래머스 - 게임 맵 최단거리

문제https://school.programmers.co.kr/learn/courses/30/lessons/1844# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이가중치가 없는 그래프이므로 최단거리를 찾기 위해 BFS 알고리즘을 사용한다그래프의 최대 크기가 100x100이므로 인접행렬을 통해 그래프를 만든다  코드python123456789101112131415161718192021222324252627def bfs(row, col, maps):    q = [[row, col]]        dist = [[-1] * len(maps[0]) for ..

프로그래머스 2024.04.15

프로그래머스 - 폰켓몬

문제https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이nums 배열의 폰켓몬의 종류가 모두 다른 경우는 문제의 최대값으로 N / 2 만큼 뽑을 수 있다.따라서 중복이 있을 경우는 N / 2이나 이보다 작은 값이 정답이 된다.종류를 고를 때는 중복을 제거한 nums에서 고른다. 중복을 제거한 nums의 길이가 N / 2 보다 같거나 크다면 N / 2만큼 중복되지 않은 폰켓몬을 뽑을 수 있으므로 N / 2가 정답이다. ..

프로그래머스 - 양과 늑대

문제https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이루트 노드부터 인접 노드를 통해 갈 수 있는 모든 노드를 탐색한다.여기선 BFS를 사용한다. 인접 노드를 이동하려면 양과 늑대의 수를 비교해야 한다.아래 그림에서 0 -> 1로 바로 갈 순 없다.0->2 방향으로 탐색을 진행한 후 양의 수가 더 많으면 1을 탐색할 수 있는데, 그 전까지 1번은 방문해도 3번과 4번 노드에 대해 BFS 작업을 진행할 수 없다.트리의 노드를 구성할 때 아래와 같..

프로그래머스 - 미로 탈출

문제https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이그래프에서 최소 시간을 찾아야 하므로 BFS를 사용한다.문제 조건 중 L 칸을 꼭 지나가야 하므로 BFS를 2번 진행한다.S - > L, L -> E 이 2번 중에 갈 수 없는 경로가 존재하면 -1을 리턴한다.L 칸에서 BFS를 새로 시작해야 하므로 큐, visit 배열등을 다시 초기화한다.다음 방문 노드를 큐에 집어넣을 때 BFS 진행 횟수(step)를 함께 저장하면 같은 level의 노..

프로그래머스 - 다단계 칫솔 판매

문제https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이딕셔너리로 판매자의 추천자를 저장한다. 이를 통해 추천자를 타고 올라가서 root까지 찾을 수 있다.계산 결과를 저장할 때도 딕셔너리를 사용하면 편하게 저장할 수 있다.딕셔너리에 저장한 계산 결과들은 valuse() 함수를 이용해 구하면 된다.  코드python123456789101112131415def solution(enroll, referral, seller, amount):    an..

프로그래머스 - [3차] 압축

문제https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이길이가 가장 긴 문자열을 찾기 위해 인덱스 두 개를 사용한다.문자열의 시작 인덱스 start_idx와 문자열의 끝 인덱스 end_idx를 이용하고, end_idx의 값을 증가하면서 가장 긴 문자열을 찾는다.msg[start_idx : end_idx]에 해당하는 문자열이 사전에서 못 찾을때까지 end_idx를 증가시키면 가장 긴 문자열을 찾을 수 있다.그러면 사전에서 못 찾은 문자열이 나왔을 ..