[백준/BOJ] 14889 스타트와 링크 - JAVA - 실버1
·
알고리즘/문제풀이
[백준/BOJ] 14889 스타트와 링크 - JAVA - 실버1문제https://www.acmicpc.net/problem/14889문제 분석조건짝수인 N명을 2팀으로 나누고, 각 팀의 시너지 차이를 최소화하는 문제이다.풀이방법비트마스킹을 사용하여 팀을 나누어주었다.시작 조합은 각 팀에 N/2명만큼 있어야하므로 조합의 시작 부분을`1 `for (int i = 1 ; i ; i++)` 조합을 구하고 팀원수가 맞는다면 각 팀의 시너지를 구해주었다.+마지막 팀원을 고정하고 첫 부분도 고정은 했지만 비트마스킹 특성상 어쩔수없이 `1 i 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import ..
[프로그래머스] 255900 외톨이 알파벳 - JAVA - PCCP 모의고사
·
알고리즘/문제풀이
[프로그래머스] 255900 외톨이 알파벳 - JAVA - PCCP 모의고사문제https://school.programmers.co.kr/learn/courses/20847/lessons/255900 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석조건같은 알파벳이 여러 번 등장하되, 중간에 다른 문자가 끼어 그룹이 나뉘면 외톨이 알파벳이다.모든 외톨이 알파벳을 찾아 오름차순 정렬 후 문자열로 반환한다.없다면 "N"을 반환한다.풀이방법입력 문자열을 앞에서부터 하나씩 확인하며, 각 알파벳이 처음 등장한 것인지 확인하기 위해 `boolean[] visited` 배열을 사용한다.처음 나온 알파벳이면 `..
[프로그래머스] 43165 타겟 넘버 - JAVA - Lv.2
·
알고리즘/문제풀이
[프로그래머스] 43165 타겟 넘버 - JAVA - Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석조건자연수 배열이 주어지면 배열의 각 수를 더하거나 빼서 타겟 넘버를 맞추는 문제이다.풀이방법재귀 함수를 사용하는 DFS를 사용하여 문제를 해결한다.코드class Solution { public static int TG; public static int SIZE; public static int answer; public int solution(..
[백준/BOJ] 2606 바이러스 - JAVA - 실버3
·
알고리즘/문제풀이
[백준/BOJ] 2606 바이러스 - JAVA - 실버3문제https://www.acmicpc.net/problem/2606문제 분석조건네트워크로 연결된 컴퓨터들 사이에서 1번 컴퓨터와 연결된 컴퓨터의 수를 구하는 문제이다.풀이방법많은 문제를 BFS를 활용하며 해결하므로 DFS를 통해 문제 해결을 해보았다.DFS를 구현하여 문제를 해결할 수 있는데 1번 노드를 제외한 연결된 노드의 수를 출력하므로 마지막에 `-1`를 해주었다.코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static boolean[][] graph..
[프로그래머스] 159993 미로 탈출 - JAVA - Lv.2
·
알고리즘/문제풀이
[프로그래머스] 159993 미로 탈출 - JAVA - Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석조건문자열로 주어진 `maps`에서 S좌표에서 L좌표로, 그후 E좌표로 이동하는 최단 거리를 구하는 문제이다.같은 좌표를 다시 지날 수 있으며 S좌표에서 L좌표로 이동할 때 E좌표를 지날 수 있다.L좌표에서 E좌표로 이동할때도 S좌표를 지날 수 있다.1칸 이동할 때 1초가 걸릴때, 최단 시간을 구하기.풀이방법최단거리를 구하는 문제이므로 bfs를 이용한다.좌표와 카운트를..
[프로그래머스] 1844 게임 맵 최단거리 - JAVA - Lv.2
·
알고리즘/문제풀이
[프로그래머스] 1844 게임 맵 최단거리 - JAVA - Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/1844문제 분석조건n*m 사이즈로 주어진 맵에서 0,0(문제에선 1,1) 좌표에서 n-1, m-1(n, m) 좌표로 이동하는데 최단 거리를 구하는 문제이다.풀이방법최단거리를 구하는 문제이므로 bfs의 가장 기본적인 문제이다.거쳐간 땅의 수를 구해야하는 문제이므로 간단하게 좌표와 카운트를 변수로 가지는 Node 클래스를 만들어 문제를 해결했다.처음 있던 위치부터 카운트해야하므로 초기 카운트가 1부터 시작한다.코드import java.util.*;class Solution { public int solution(int[][] ma..