본문 바로가기

알고리즘159

[JAVA/BFS] 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538?language=java# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   해결 포인트최단 거리를 찾는 문제이므로 DFS 보다는 BFS가 적합하다.제시된 대로 x에 연산을 할 경우 시간 초과가 나므로, y에 역으로 연산을 하는 것이 해결책이다. import java.util.LinkedList;import java.util.Queue;class Solution { // BFS에 탑재하기 위한 임시 클래스 class TmpNu.. 2024. 5. 7.
[JAVA/DFS/MIN_HEAP] 단지번호붙이기_2667 https://www.acmicpc.net/problem/2667단지번호붙이기 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초128 MB185829831635295142.656%문제과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.입력첫 번째 줄에는 지도의 크기 N(정사각형.. 2024. 5. 3.
[JAVA/BFS] 바이러스_2606 https://www.acmicpc.net/problem/2606 바이러스 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초128 MB176210823825506045.918%문제신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는.. 2024. 5. 3.
[JAVA] 붕대 감기 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int[] bandage, int health, int[][] attacks) { // 현재 체력 int healthNow = health; // 몬스터의 마지막 공격이 끝나는 시간 int lastTime = attacks[attacks.length-1][0]; // 다음 공격 int nextAttack = 0; // 붕대 감기 .. 2024. 2. 24.
[JAVA/DFS]단어 변환 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr class Solution { int answer = Integer.MAX_VALUE; boolean[] converted; public int solution(String begin, String target, String[] words) { converted = new boolean[words.leng.. 2024. 2. 24.
[JAVA/DFS] 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { private String SPACE = " "; List travelList = new ArrayList(); boolean[] ticketUsed; int ticketCnt; public String[] solution(String[][] tickets) { ticketCnt = tickets.length; ticketUsed .. 2024. 2. 24.
[JAVA/DFS] 네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { int answer = 0; boolean[] visited; public int solution(int n, int[][] computers) { visited = new boolean[n]; for(int i=0; i 2024. 2. 23.
[JAVA/BFS] 가장 먼 노드 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int n, int[][] edge) { int answer = 0; // edge와 방문 기록 저장 Map edgeMap = new HashMap(); boolean[] visited = new boolean[n+1]; // edgeMap 초기화 for(int i=1; i 2024. 2. 23.
[JAVA] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public String[] solution(String[][] plans) { String[] answer = new String[plans.length]; // 다루기 편하게 클래스로 변경 Homework[] homeworks = new Homework[plans.length]; for(int i=0; i< plans.leng.. 2024. 2. 23.
[JAVA] 디펜스 게임 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.PriorityQueue; import java.util.Collections; class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; // 막은 적들을 내림차순으로 저장 PriorityQueue pq = new PriorityQueue(Collections.reverseOr.. 2024. 2. 22.
[JAVA/DP] 연속 펄스 부분 수열의 합 https://school.programmers.co.kr/learn/courses/30/lessons/161988# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public long solution(int[] sequence) { // 16, 19, 20이 계속 에러가 나서 왜그런가 하고 봤더니 자료형을 int가 아니라 long으로 하면 해결됨 // https://school.programmers.co.kr/questions/45489 // +1을 먼저 곱할때와, -1을 먼저 곱할때의 경우의 수 // 사실 굳이 이렇게할 .. 2024. 2. 22.
[JAVA/BFS] 석유 시추 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { // 각 열별로 얻을 수 있는 석유의 총양 int[] total; // 탐색 여부 private boolean[][] visited; // 정답 private int max = 0; public int solution(int[][] land) { // 입력된 land의 크기에 따라 필요한 배열 크기 지정 total = new in.. 2024. 2. 22.