알고리즘 778

프로그래머스 두 수의 합 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181846 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 일반적으로 두 수를 더하는 방법을 구현하였습니다. 각각의 String의 마지막 인덱스의 값을 가져오고 이 값을 합하고 10 넘으면 다음 연산에 추가하는 방법으로 구현했습니다. class Solution { public String solution(String a, String b) { String answer = cal(a,b); return answer; } private static S..

알고리즘 2023.05.22

백준 5639번 이진 검색 트리 (JAVA)

https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 저는 재귀를 통해 문제를 해결하였습니다. 먼저 루트값이 나오게 되고, 이후 이 루트값보다 낮다면 왼쪽, 높다면 오른쪽에 존재하기 때문에 이 기준으로 둘을 나누고, 현재 값을 출력해 나가면서 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; public class BO..

알고리즘 2023.05.21

백준 22114번 창영이와 점프 (JAVA)

https://www.acmicpc.net/problem/22114 22114번: 창영이와 점프 창영이는 버스에서 내린 뒤 회사로 걸어가고 있다. 창영이가 걸어가는 길은 대부분 회색 보도블럭으로 포장되어 있는데, 가끔씩 빨간 보도블럭이 놓여있을 때가 있다. 창영이는 어린 시절 빨간 www.acmicpc.net 저는 투 포인트를 통해 문제를 해결하였습니다. endIndex를 늘리면서 만약 k보다 크다면 한번 점프를 사용했는지를 판단하여 사용하지 않았다면 계속 진행합니다. 그 다음으로 k보다 큰 것이 나온다면 이전에 큰 점프를 한 다음 시점으로 startIndex를 옮깁니다. 이때 각각의 지점에서 endIndex - startIndex + 2의 값와 결과값을 비교하여 큰 값으로 합니다. +2를 하는 이유는 ..

알고리즘 2023.05.20

백준 16441번 아기돼지와 늑대 (JAVA)

https://www.acmicpc.net/problem/16441 16441번: 아기돼지와 늑대 첫 번째 줄에는 격자의 행의 수를 나타내는 N (3 ≤ N ≤ 100) 과 격자의 열의 수를 나타내는 M (3 ≤ M ≤ 100) 이 주어집니다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열 www.acmicpc.net 저는 BFS를 통해 문제를 해결하였습니다. 각각의 W(늑대)좌료를 Q에 넣고 BFS를 진행하였고, +(얼음)인 경우 범위를 넘기 않고 계속 +(얼음) 인지를 판단하여 그런 경우는 계속 그 방향으로 진행하도록 하였습니다. 그렇게 도착한 곳이 #이거나 범위를 넘기면 뒤로 옮겼습니다. 마지막으로 '.'(초원)이면서 BFS에서 방문하지 않은 곳은 P로 변경하였습니다. pa..

알고리즘 2023.05.19

프로그래머스 삼각 달팽이 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 저는 배열을 통해 삼각 달팽이를 표현하였고, y = 0 && y = 0 && x = n || x = n || map[y][x] != EMPTY){ y -= DY[..

알고리즘 2023.05.18

프로그래머스 정수를 나선형으로 배치하기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 한쪽 방향으로 배열을 채우고 범위를 넘어가거나 채워져있다면 방향을 90도 회전시켰습니다. 여기서 주의할 점은 배열의 크기가 1일 때 컴파일 에러가 나오지 않게 하는 것이였습니다. 저는 처음에 while을 true로 하고 진행하여서 컴파일 에러가 나와 while문 조건을 바꿔 문제를 해결하였습니다. class Solution { private static ..

알고리즘 2023.05.17

백준 2851번 슈퍼 마리오 (JAVA)

https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 저는 처음부터 입력의 값을 더하고 이 값을 100과 얼마나 차이나는지를 확인하고 이전보다 차이나지 않으면 결과값을 초기화했습니다. 같을 때는 어차피 뒤에 나온 값이 이전의 값보다 클 것이기 때문에 이때도 초기화하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.function.Function; public class BOJ..

알고리즘 2023.05.16

백준 18404번 현명한 나이트 (JAVA)

https://www.acmicpc.net/problem/18404 18404번: 현명한 나이트 첫째 줄에 N과 M이 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ N ≤ 500, 1 ≤ M ≤ 1,000) 둘째 줄에 나이트의 위치 (X, Y)를 의미하는 X와 Y가 공백을 기준으로 구분되어 자연수로 주어진다. ( www.acmicpc.net 저는 BFS를 통해 문제를 해결하였습니다. 처음에는 시작점에서 각각의 목표점으로 가는 시간을 다 측정하였지만, 시간초과가 나왔습니다. 다시 생각해보니 그냥 시작점에서 모든 점으로 얼마나 걸리는지 확인하고 그 값을 출력하면 되는 문제였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.Inpu..

알고리즘 2023.05.14

백준 17608번 막대기 (JAVA)

https://www.acmicpc.net/problem/17608 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 오른쪽에서 보이는 것은 이전에 보인 기둥 보다 커야 보이기 때문에 이전에 가장 큰 기둥의 길이보다 크다면 cnt늘리주고 마지막에 이 값을 출력하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.function.Function;..

알고리즘 2023.05.13

백준 3986번 좋은 단어 (JAVA)

https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 저는 스택을 통해 문제를 해결하였습니다. 저는 아치형 곡선을 그어 같은 글자끼지 연결하였을 때 선이 교차하지 않는 것이기 때문에 저는 괄호 문제와 비슷하다고 생각하였습니다. 문자열을 돌면서 stack이 비어있거나 stack맨 위와 지금 글자가 다르다면 넣고 같다면 stack에서 하나 빼줘서 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; impor..

알고리즘 2023.05.12