본문 바로가기

Java/알고리즘

(51)
[PCCP 대비] ch 4. 문자열(2) 2. 문자열 다루어 보기  1) 문자열 응용하기  String 클래스에서 많이 사용되는 메서드 메서드반환형내용equals(String other)boolean문자열이 other와 같은 문자열을 담고 있는지 반환length()int문자열 길이를 반환substring(int beginIndex, int endIndex)String문자열의 beginIndex부터 endIndex까지 잘라서 반환toUpperCase()String모든 알파벳이 대문자로 반환된 문자열을 반환toLowerCase()String모든 알파벳이 소문자로 반환된 문자열   문제 8) 문자열 압축  코딩테스트 연습 - 문자열 압축 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개..
[PCCP 대비] ch 4. 문자열 (1) 1. 문자열이란?  1) 문자열의 특징  문자의 배열  - 자바에서 String 클래스로 표현되는 문자열은 내부적으로 배열을 이용해서 표현한다. 이 문자열 내 문자를 가져오는 방법은 두가지 이다.  String.charAt(int index)주어진 인덱스에 있는 문자를 char 형식으로 반환String.toCharArray() 모든 문자가 들어 있는 char[ ] 형식의 데이터를 반환  아스키 코드  - 문자는 내부적으로 정수로 취급되고 연산된다. - 아스키코드는 기본적인 128개의 문자가 가지는 정수코드이다. - 숫자를 표현하는 문자에서 '0'의 아스키 코드를 빼면 문자가 표현하는 정수 값이 나온다.  char digit = '9';int digitToInt = digit -'0'; - 내장 라이브러리..
[PCCP 대비] ch 3 배열 (2) 문제 3) 거리두기 확인하기  코딩테스트 연습 - 거리두기 확인하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  ● 문제 풀이  - 단순히 상하좌우를 확인하는 것이 아니라 맨해튼 거리가 2인 모든 위치를 확인해야 한다. - 맨해튼 거리 2 내에 파티션이 사이에 있지 않은 다른 응시자가 있는지 검사해야 한다.- 주목할 점은 맨해튼 거리 2에 도달하려면 먼저 맨해튼 거리 1(상하좌우)을 거쳐야 한다는 것이다.  - 맨해튼 거리 2인 위치에 도달하려면 맨해튼 거리 1인 위치를 거쳐야 하고, 맨해튼 거리 1의 위치들이 파티션으로 막혀 있다면 맨해튼 거리 2에는 다른 응시자가 있어도 파..
[PCCP 대비] ch 3. 배열 (1) 1. 2차원 배열 다루기  1) 2차원 배열 응용  문제 1) 교점에 별 만들기  코딩테스트 연습 - 교점에 별 만들기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  ● 문제 풀이  문제 풀이 흐름 1. 모든 직선 쌍에 대해 반복    A. 교점 좌표 구하기     B. 정수 좌표만 저장  2. 저장된 정수들에 대해 x,y 좌표의 최댓값, 최솟값 구하기  3. 구한 최댓값, 최솟값을 이용하여 2차원 배열의 크기 결정 4. 2차원 배열에 별 표시 5. 문자열 배열로 변환 후 반환  코드 작성  - 좌표를 나타내는 클래스- 데이터를 나타내는 클래스이므로 final 키워드를 사용하여 ..
[자바 알고리즘 인터뷰] 12장 그래프 (9) 코스 일정 https://leetcode.com/problems/course-schedule/description/  - 0을 완료하기 위해선느 1을 끝내야 한다는 것을 [0,1] 쌍으로 표현하는 n개의 코스가 있다.- 코스 개수 n과 이 쌍들을 입력으로 받았을 때 모든 코스가 완료 가능한지 판별하라  풀이 1) DFS로 순환 구조 판별  - 이 문제는 그래프가 순환(Cyclie) 구조인지를 판별하는 문제로 바꿀 수 있다. - 순환 구조라면 계속 뱅글뱅글 맴돌게 될 것이고, 해당 코스는 처리할 수 없기 때문이다. - 따라서 순환 판별 알고리즘을 구현하면 이 문제를 풀이할 수 있다. Map> finishtoTakeMap = new HashMap();//완료하기 위해 처리해야 하는 일정을 finish->take 형태의..
[자바 알고리즘 인터뷰] 12장 그래프 (8) 여행 경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     풀이 1) 일정 그래프 반복 DFS 2024.05.17 - [Java/알고리즘] - [자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성 [자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성https://leetcode.com/problems/reconstruct-itinerary/description/    - [from,to]로 구성된 항공권 목록을 이용해 JEK에서 출발하는 여..
[자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성 https://leetcode.com/problems/reconstruct-itinerary/description/    - [from,to]로 구성된 항공권 목록을 이용해 JEK에서 출발하는 여행 일정을 구성하라. 여러 일정이 있는 경우 사전 어휘순(Lexical Order)로 방문한다.   풀이 1) 일정 그래프 재귀  DFS - 여행 일정을 그래프로 구성해 DFS를 진행하면 징행된 경로를 정답으로 처리할 수 있다. - 주의할 점은 중복된 일정일 경우 어휘순으로 방문한다는 점이다, - 입력값인 여행 일정은 끝까지 이어질 것이므로 from->to 형태의 그래프로 구성해 끝까지 탐색하면 된다.  //여행 일정을 from->to 형태의 그래프로 구성for(List ticket : tickets) { ..
[자바 알고리즘 인터뷰] 12장 그래프 (6) 부분집합 https://leetcode.com/problems/subsets/description/  - 모든 부분집합을 리턴하라   풀이 1) 트리의 모든 DFS 결과  - 트리를 구성하고 트리를 DFS하는 문제로 풀이할 수 있다.- 자기 자신보다 큰 값이 자식 노드인 트리형태가 된다.   - path에 지금까지 탐색한 경로를 저장하며 인덱스를 증가시키면서 DFS한다. - 별도의 종료 조건없이 모든 탐색의 경로가 부분집합이 되므로 탐색할 때 마다 매번 결과를 추가하면 된다.  public void dfs(List> results, int nums[], int index, Deque path){ //모든 탐색 경로를 매번 결과에 추가 results.add(new ArrayList(path)); /..