알고리즘 56

자바 - 프로그래머스 / 연속된 부분 수열의 합

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 5 ≤ sequence의 길이 ≤ 1,000,000 이므로 이중 포문 돌리면 런타임 에러 뜬다 이럴 때 쓰는 방법이 바로 투 포인터 알고리즘! O(n)으로 가능하다. 투 포인터 알고리즘을 사용해서 시작 부분, 끝 부분 두가지 포인터를 만들어서 원하는 연속된 합에 부합할때 까지 포인터를 움직이는 방법으로 구현했다. 원하는 값보다 작은 경우 끝 부분 포인터를 움직혀 합을 크게 하..

알고리즘 2023.04.24

자바 - 프로그래머스 / 행렬 테두리 회전하기

https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Lv 2 구현 방법 조건은 queries의 행의 개수(회전의 개수)는 1 이상 10,000 이하입니다. 1 ≤ x1 startRow; j--) { plate[j][endCol] = plate[j - 1][endCol]; min = Math.min(min, plate[j][endCol]); } plate[startRow + 1][endCol] = firstNum; answer[i] = min; } ..

알고리즘 2023.04.21

자바 - 프로그래머스 / 추억 점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 1 구현 방법 제한 사항 3 ≤ name의 길이 = yearning의 길이≤ 100 3 ≤ photo의 길이 ≤ 100 1 ≤ photo[i]의 길이 ≤ 100 이므로 photo를 이중 포문 돌려도 된다. 또한 name과 yearning을 해시 맵으로 만들면 이름 비교는 O(1)으로 해결 됨. 따라서 HashMap 필요하다. 문제는 해시맵에서 이 key값이 존재 하는지 확인하는 과정이 필요..

알고리즘 2023.04.18

자바 - 프로그래머스 / 달리기 경주

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 1 구현 방법 처음 : 이중 포문으로 원하는 값 찾아서 위치 바꾸기 하지만, 3 ≤ players[i]의 길이 ≤ 10 2 ≤ callings의 길이 ≤ 1,000,000 으로 이중 포문 돌리니까 런타임 에러 뜸 나중 : players 배열을 해시맵으로 바꿔서 원하는 값 찾을때 O(1)로 바꿔서 구현 주의점은 랭킹 바꿀때 players 배열만 업데이트 하는게 아니라 해시맵 정보도 업데이트 ..

알고리즘 2023.04.17

자바 - 백준 20055 / 컨베이어 벨트 위의 로봇

https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 골드5 구현 방법 구현 문제라서 문제에 적힌대로 코드 작성하면 된다. 딱히 사용한 자료구조나 알고리즘도 없다. 2 ≤ N ≤ 100 1 ≤ K ≤ 2N 1 ≤ Ai ≤ 1,000 조건도 위와 같아서 O(n^2)도 충분히 가능하다. 주의할 점은 로봇 위치 이동에 따라 로봇 올리는 곳과 로봇 내리는 곳 신경써서 구현해야 한다. 코드 package boj; import java.i..

알고리즘 2023.04.13

자바 - 백준 12101 / 1, 2, 3 더하기 2

https://www.acmicpc.net/problem/12101 12101번: 1, 2, 3 더하기 2 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. www.acmicpc.net 실버1 구현 방법 n은 양수이며 11보다 작고, k는 2^31-1보다 작거나 같은 자연수라서 이중 포문 써도 된다. 1. n까지 가지는 총 갯수를 저장하는 배열 만들기 2. 2차원 dp를 만들어서 숫자별로 합을 나타낼 수 있는 경우들 배열에 저장하기 3. bottom-up 방식의 점화식을 이용해서 원하는 값까지 저장하기 4. 사전순으로 정렬하기 코드 import java.io.BufferedReader; import java.io..

알고리즘 2023.04.10