Loading...

[백준] 20056번 마법사 상어와 파이어볼 (java, 구현, bfs)

www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net bfs로 뭐든 되는구나 싶었다 1번이랑 n번이 연결된다는게 뭔가 싶었는데 범위를 넘어가면 그만큼 빼서 다시 안의 범위로 들어오게 해야된다 그 다음에는 파이어 볼 개수만큼 큐에 집어넣고 그 길이만큼만 bfs로 돌린 후 다시 새로 만든 파이어볼을 큐에 넣고 k번 돌리면 된다. import java.util.ArrayList; import java.util.LinkedList;..

[swexpert] 5656. 벽돌깨기 (java, bfs)

bfs 심화랄까 벽돌을 n번 깨뜨릴 수 있는데 열의 길이 w 중에 어디를 n번 때릴지 미리 결정한 후 (중복조합) 그 다음에 bfs 돌린다고 생각해놓고 짜면 훨씬 낫다. 백준 토마토 문제처럼 연속적으로 깨지게 되는 벽돌을 모두 처리한 후 다음 bfs를 돌린다. import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pos{ int y; int x; int num; public Pos(int y, int x, int num) { super(); this.y = y; this.x = x; this.num = num; } } public class Solution ..

[백준] 7569번 토마토 (java, 3차원 bfs)

www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 앞뒤를 나타내는 좌표 이동을 추가해서 추가로 검사해준다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pos{ int h,y,x; public Pos(int h, int y, int x) { super(); this.h = h; this.y = y; this.x = x; } } pu..

[백준] 17144번 미세먼지 안녕! (java, 구현)

www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net import java.util.ArrayList; import java.util.Scanner; class Pos{ int y, x; public Pos(int y, int x) { super(); this.y = y; this.x = x; } } public class Main { static int r,c,t; static int[][] map; static int[][] add; static int[] ..

[백준] 7576번 토마토 (bfs)

www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 한 번에 1인 곳 주변이 모두 익어야되기 때문에 큐에 현재 1인곳을 다 집어넣고 매번 순회할 시에 모두 bfs탐색을 한꺼번에 해준다. for문 (현재 익어있는 토마토 개수)만큼 bfs를 돌면서 큐에 넣어준 다음에야 다음 차례의 토마토들이 큐에서 나온다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; c..

[프로그래머스] 파일명 정렬 (javascript)

javascript sort가 제자리 정렬이 아니어서 제자리 정렬을 하기 위해서 index정보를 저장한다음 정렬 조건에 추가해야된다는 것을 알게 되었다 정규표현식없이 for문을 돌면서 heade, number, tail을 분리했는데 계속 모든 예제가 통과되지가 않아서 일단 정규표현식으로 해봤다. 지쳐서 내일 다시 구현으로 분리해봐야겠다. function solution(files) { var answer = []; let newFiles=[]; for(let k=0;k{ let sa=a[1].toLowerCase(); let sb=b[1].toLowerCase(); if(sa===sb){ let na=Number(a[2]); let nb=Number(b[2]); if(na>nb)return 1; else..

[swexpert] 2819. 격자판의 숫자 이어붙이기 (java,bfs )

set을 이용해서 문자열이 중복으로 들어가지 않도록 한 후 최종 set의 길이를 출력해주었다. import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Set; class Item{ int y,x; String result; public Item(int y, int x, String result) { super(); this.y = y; this.x = x; this.result = result; } } public class Solution { static int t; static int[][] map; static int[] xpos= {0,..

[swexpert] 3752. 가능한 시험점수 (java, dfs, 완전탐색, 구현)

백준의 양팔 저울과 문제가 같은 문제인거 같다. 부분합으로 구할 수 있지만 시간초과가 나서 시간을 줄이기 위해서 이전까지 나온 결과값에 현재 점수를 더해주면서 set과 arr 리스트를 갱신해줬다. arr배열을 만든 이유는 현재 점수를 틀렸다고 가정했을 때 이전 점수와 같은 점수가 될 텐데 또 더해주지 않으면서 다음 문제 차례에 계산할 때 쓸 이전 점수들의 모음이 필요하기 때문이다. import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Solution { static int n,t; static int[] score; static Set s; static ..

[swexpert] 1249. 보급로 (swexpert, java, c++, bfs)

1. java import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pos{ int y,x; public Pos(int y, int x) { super(); this.y = y; this.x = x; } } public class Solution { static int t,n; static int[][] map; static int[] xpos= {1,-1,0,0}; static int[] ypos= {0,0,1,-1}; static int[][] vis; public static void main(String[] args) { Scanner sc=new Scan..

[swexpert] 5644. 무선 충전 (구현, java)

사용자를 2명으로 제한해줘서 그나마 다행인 문제 충전소까지 거리가 닿냐에 따라서 사용할 수 있거나 없거나 하는데 사용하는 충전소를 중복 조합으로 만들어준다. 중복조합이라고 해서 재귀를 돌릴 필요는 없고 충전소 개수만큼 for문을 돌려주면 된다 다른 충전소이면 총 충전량을 더해주고 같은 충전소이면 충전소가 제공하는 양만큼 (충전한 곳이 하나라도 있을 경우 둘 다 거리가 안닿으면 0) 더해준다. import java.util.ArrayList; import java.util.Scanner; class Pos{ int y,x; public Pos(int y, int x) { super(); this.y = y; this.x = x; } } class Charge{ int y,x,c,p; public Charg..