[프로그래머스] 연속 부분 수열 합의 개수 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ⭐️ 중요 포인트1. 일단 3중 포문을 사용해서 완탐으로 문제를 해결할 수 있다.2. 그러나 완탐으로 해결하게 되면 중복된 경우(startIdx가 0부터 시작해서 len이 1, 2, 3, ..., n까지라고 할 때 (1), (1+2), (1+2+3), ... 처럼)가 계산된다.3. 문제는 해결되지만 좀 더 빠른 방법으로 구현하기 위해서 elements의 길이만큼 cache를 선언하여 누적합을 구해 set에 넣으면 중복을 줄일 수 있다.(0번째..
[백준] 5430. AC - Java
·
백준 알고리즘/Java
https://www.acmicpc.net/problem/5430 ⭐️ 중요 포인트1. 문자열 파싱 -> String.split() + 정규 표현식(",|\\[|\\]")을 통해 해결(이 때, 정규 표현식은 (,) or ([) or (]')를 기준으로 나누고, 맨 앞에 공백이 있기 때문에 deque에 넣을 때는 인덱스가 0이 아니라 1부터 넣어야 한다.)2. 🔥제일 중요🔥 이 문제에서 가장 많이 틀리는 부분일 것이다. 이 부분때문에 시간초과가 많이 난다.이 문제에서 가장 많은 연산량을 차지하는 부분은 reverse() 부분이다. Java의 경우 O(N)이다.t : 100 / p : 100,000 / n : 100,000(R과 D가 번갈아 나오는 경우가 최악의 경우이다. 왜냐하면 연속된 R이 나오면 나..
[백준] 15686. 치킨 배달 - Java
·
백준 알고리즘/Java
https://www.acmicpc.net/problem/15686 ⭐️ 중요 포인트1. 처음에 city를 입력받을 때, 집(개수만 저장해도 됨)과 치킨집의 위치(추후 m개를 선택할 때 사용)를 List에 저장.2. dfs를 돌며 m개의 치킨집을 선택 후, 해당 치킨집들을 시작점으로 하는 bfs를 돌며 집을 모두 방문할 때까지 탐색.(집을 방문할 때마다 bfs를 통해 구한 최소 거리들을 누적해서 반환)3. answer과 bfs를 돌며 얻은 반환 값을 비교하며 더 작은 값을 answer로 갱신. import java.io.*;import java.util.*;public class P15686 { static class Pos { int x; int y; int ..
[프로그래머스] 방문 길이 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ⭐️ 중요 포인트1. Point와 Edge의 equlas()와 hashCode()를 직접 구현하기(기존의 equals()를 사용하게 되면 내부 값이 같은지 비교하는 것이 아니라 클래스의 주소 값이 같은지(같은 클래스인지) 비교하게 된다.)2. Edge는 방향성이 없으므로 hashCode를 p1과 p2의 합으로 두면 방향이 같아도 서로 같은 edge(객체)라고 인식해 중복을 없앨 수 있다.3. isInRange()로 게임 캐릭터가 다음 움직일 칸..
[프로그래머스] 최솟값 만들기 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 과외 학생 질문 문제입니다. ⭐️ 중요 포인트1. 두 배열의 요소를 중복 선택을 허용하지 않고 하나씩 골라 가장 작은 누적합을 만드는게 목표2. 두 배열을 정렬한 후 하나를 반대로 순환하며 가장 작은 수 끼리 골라서 곱하고 누적. import java.util.*;class Solution{ public int solution(int []A, int []B) { int answer = 0; Ar..
[프로그래머스] 자연수 뒤집어 배열로 만들기 - Java
·
프로그래머스 알고리즘/Java
https://school.programmers.co.kr/learn/courses/30/lessons/12932 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코딩 과외를 하면서 질문이 들어왔던 문제입니다.과외 학생이 해당 실수를 해서 질문을 했었는데, 쉽다고 생각하고 답변해주다가자료형이 표현할 수 있는 범위 + 괄호의 우선순위에 대한 생각을 안해서조금 고민했던 문제입니다. ⭐️ 중요 포인트1. n의 자료형이 long이라는 것을 생각해서 list에 저장할 때 Integer Long 변환 잘할 것.특히 "list.add(n %10)" 부분에서 실수했던게 형 변환 한다고 "list.add((int)n ..