전체 글 121

[프로그래머스/Java] '게임 맵 최단거리'(BFS/DFS 문제) 풀이

프로그래머스의 알고리즘 고득점 Kit 중 BFS/DFS 문제 중 하나인 '게임 맵 최단거리'를 자바로 풀어봤다.https://school.programmers.co.kr/learn/courses/30/lessons/1844# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 우선 처음에는 이 문제를 DFS로 접근했다. 끝까지 들어가서 상대팀 진영(우측 맨아래)에서부터 하나씩 더해나가며 캐릭터의 위치에 최솟값을 넣는 것으로 했다. 하지만 이 방법으로 할 경우, 효율성이 BFS에 비해 심각하게 저하된다. 한 위치에 여러번 방문해야 하는 경우가 너무 많아진다.  그래서 결국 BFS로 바꾸어 접근했다. (통상적으..

[프로그래머스/Java] 네트워크(BFS/DFS 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 BFS/DFS 문제인 '네트워크'를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 DFS를 이용해서 푸는 문제이다. BFS와 DFS에 대한 좀 더 자세한 설명이나 구현은 아래 글에서 볼 수 있다.https://programming-diary-ina.tistory.com/30 [백준 1260번/C언어] DFS와 BFS, Queue로 풀이백준 1260번 문제를 큐(Queue)로 풀어보았습니다. 백준 1260번: https:/..

[SpirngBoot/오류] 의존성 순환(Circular Dependency) 오류 해결

Spring Boot에서 OAuth2 파트를 공부하면서 만들어 둔 프로그램을 실행시키던 중 아래와 같은 오류가 발생했다. Description:The dependencies of some of the beans in the application context form a cycle:┌─────┐| webOAuthSecurityConfig defined in file [C:\Users\...\build\classes\java\main\com\study\blogproject\config\WebOAuthSecurityConfig.class]↑ ↓| userService defined in file [C:\Users\...\build\classes\java\main\com\study\blogproje..

[운영체제 실습] System Call 추가하기

코드 깃허브: https://github.com/splab-ELE3021/assignment-2021037756.git참고자료: https://eckrin.tistory.com/120 [OS] xv6 사용법 정리0. 쉘 명령어(커널명령어) 추가 Makefile의 UPROG와 EXTRA부분에 다음과 같이 추가해준다. 1) UPROG=\ ... _new\ 2) EXTRA=\ umalloc.c new.c\ 1. 파일 추가 README file in Xv6 is a generic file too. Searching for occurrences of README ieckrin.tistory.com  실습 목표   실습의 목표는 부모 process의 id를 리턴하는 getppid() system call을 add ..

[프로그래머스/Java] 도둑질(DP 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 동적계획법(DP) 파트 문제인 '도둑질'을 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/42897# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   사실, 문제 자체의 알고리즘이나 접근법은 어렵지 않다. 그냥 차례로 money 배열을 순회하며, i번째 element보다 인덱스가 최소 2개 앞서있는 dp 배열 요소(인덱스가 i-1보다 작은 요소) 중 최댓값에 현재값을 더하여 dp[i]에 저장해 나가면 된다. 그리고 마지막으로 dp 배열에 저장된 값 중 최댓값을 리턴하면 된다. 다만 이렇게 ..

[프로그래머스/Java] 사칙연산(DP 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 동적계획법(DP) 파트에 해당하는 '사칙연산' 문제를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 DP 문제이기 때문에 이를 어떻게 활용할지에 대해서 가장 고민한 것 같다. 고민 끝에 결정한 방법은 l을 괄호를 여는 쪽, r을 괄호를 닫는 쪽으로 두고, dp[l][r]에 그 괄호 속 결과를 저장하는 것이었다. 처음에는 dp 배열로 2차원 배열을 하나만 사용했다. 최댓값을 찾는 문제이기에 모든 파트의 최댓값을 기록했던 것이..

[프로그래머스/Java] N으로 표현(DP 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 동적계획법(DP) 파트 문제인 N으로 표현을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42895# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   처음에 점화식을 찾는 데에 상당히 오랜 시간이 걸렸다. 그것만 찾고 나면 코드 자체는 어렵지 않게 쓸 수 있다. 대체로 DP 문제들이 점화식 찾는 게 어렵고 그 뒤는 크게 어렵지 않게 해결 가능한 것 같다. 이 문제의 기본적인 해결 방법은 동적 배열의 i번째 인덱스에, N을 i번 사용하여 만들 수 있는 숫자들의 set을 저장하는 것이다. ..

[Backend/Redis] Redis 야무지게 사용하기

해당 포스트 내용은 아래 강의 내용을 정리/요약한 내용입니다.https://www.youtube.com/watch?v=92NizoBL4uA  1. Redis 캐시로 사용하기1.1. 캐시(Cache)란? 사용자의 입장에서 데이터의 원래 소스보다 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소. 속도 향상을 위해 사용. (원본에 접근하는 것보다 빠르게 접근 가능하도록 함)1.2. Redis를 캐시로 사용할 때의 장점단순한 key-value 구조로 어떤 데이터라도 쉽게 저장 가능.In-memory Data Store(모든 데이터를 메모리에 올려둠)로 빠른 처리 속도를 가짐1.3. 캐싱 전략[Read 전략] Look-Aside (Lazy Loading)데이터를 찾을 때 우선 cache를 확인하고, ..

[Backend/OAuth] 구글 로그인 기능 구현을 위한 토큰 발급 받기

만드는 웹 서비스에 구글 로그인 기능을 추가하기 위해 인증 서버인 구글에서 토큰을 발급받아 보았다. 1. goold cloud console (https://cloud.google.com/cloud-console) 접속해서 콘솔 버튼 클릭 2. 프로젝트 목록에 들어가서 새 프로젝트 생성 버튼 클릭  3. 프로젝트 생성 후 목록에서 생성된 프로젝트 선택   4. 왼쪽 메뉴에서 'API 및 서비스' - '사용자 인증 정보' 페이지로 이동5. 동의 화면 구성 앱 이름은 자유롭게 입력해 주고, 이메일을 꼭 기입. 대상은 외부를 선택.  6. 범위 설정 7. 클라이언트 생성애플리케이션 유형을 '웹 애플리케이션'으로, 이름은 자유롭게 기입. 다음 URI에 "http://localhost:8080/login/oaut..

[프로그래머스/Java] 섬 연결하기(Greedy 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 Greedy 파트 문제 중 하나인 '섬 연결하기'를 자바를 이용하여 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42861# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   접근 자체는 크게 어렵지 않다. 그냥 cost가 작은 순으로 costs 배열을 정렬해 주고, costs 배열을 순회하면서 아직 이어지지 않은 섬들을 이어주는 cost를 answer에 더해주고 리턴하면 된다.  이때, 아직 이어지지 않은 섬은 boolean 2차원 배열인 isLinked를 만들어서 확인해주었다. 다만 처음에는..

728x90