Loading...

[백준] 1024번 수열의 합 (java, 수학)

www.acmicpc.net/problem/1024 1024번: 수열의 합 첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다. www.acmicpc.net 반례 3 3 => 0 1 2 3 2 => 1 2 5050 99 => 1부터 100까지 10 4 => 1 2 3 4 10 5 =>0 1 2 3 4 5 슬라이딩 윈도우처럼 앞에서부터 더해가며 n보다 커지면 가장 앞의 수를 빼주면 되는 문제이다. 더해준 수의 시작점과 끝점을 구해줘야 되는데 끝점은 현재 인덱스 i이고 시작점은 초기 0으로 둔 다음에 수가 커서 빼줄 때마다 1씩 더해준다. 길이가 l이상일 때 import java.util.Scanner; pu..

[swexpert] 2115. 벌꿀 채취 (java, 백트래킹, 완전탐색)

a라는 사람과 b사람이 벌꿀을 채취하는데 벌집이 중복되지 않도록 해야된다. a라는 사람은 모든 행, 열 기준으로 고르는데 b라는 사람은 a와 같은 행이라면 열이 중복되지 않도록 해야하고 다른 행이면 상관없이 뽑는다. 1. collect 함수 a는 모든 경우를 전사적으로 구해주므로 list에 집어넣는다. (추후 다른 행이면서 열이 중복된 경우를 계산할 때 쓴다) b는 a와 행이 겹치지 않는 부분에서 subset을 돌려준다. 일단 이 함수에서 a의 최대값과 b의 최대값의 합의 최대값으로 answer를 갱신해주면 행은 같은 경우는 끝난다. 2. calculate함수 다른 행의 중복된 열을 구해준다. a라는 사람은 collect함수에서 전사적으로 모든 subset 경우를 구해줬다. a사람이 구한 리스트지만 이제..

[swea] 5643번 키순서 (java, dfs)

처음에 플로이드 와샬로 풀었는데 t의 자리에 tc를 넣었다가 런타임에러 났었다. 내일 다시 플로이드 와샬로 풀어봐야지 내 위치에서 dfs로 돌면서 next(나보다 큰 친구들)의 count값을 증가시키면 next입장에서는 작은 애들의 개수만큼 업데이트가 된다. temp는 dfs를 도는 횟수를 가르키는데 현재 내 번호보다 큰 친구들의 수(나 포함)로 count[내번호]+temp 해주면 나보다 큰 친구들의 수를 구할 수 있다. 이렇게 temp로 업데이트 (나 포함해서 나보다 큰 친구들의 수) + count[next] 업데이트 (나보다 작은 친구수만큼 증가) 의 합이 n이 되면 나의 순서를 알 수 있는 경우이다. import java.util.ArrayList; import java.util.Scanner; p..

[백준] 17140번 이차원 배열과 연산 (java, 구현, 시뮬레이션)

www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 최대 길이가 100만 가능하므로 미리 크기 100으로 만들어놓고 넘어가는 길이의 데이터만 무시해준다. 각 행별로 각 수를 count배열에 등장하는 만큼 1로 더해줘서 (수, 등장횟수) 쌍을 리스트에 넣어준다. 리스트에 넣어줄 때 중복된 수가 들어가지않도록 주의! 해준다 리스트를 기준에 따라 정렬한다. 최대 행 길이와 최대 열 길이는 정렬할 때마다 새로 구해줘야된다. 계속 max연산만 하면 이전 정렬..

[백준] 13335번 트럭 (java, 구현)

www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 프로그래머스에도 있는 문제다 일단 리스트에 트럭을 입력받는다는 생각에 list로 했지만 arraylist대신 queue를 쓰면 시간 효율성에 더 좋을 것이다 다리에 들어가는 트럭 리스트: Queue q 다리에 들어가려고 기다리는 리스트: list q혹은 list의 길이가 아직 1이 아니면 진행이 종료되지 않은 트럭이 있으므로 기다린다. 트럭이 빠져나오는 시간은 현..

[백준] 15683번 감시 (시뮬레이션, java)

www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 2번 감시카메라 방향 종류는 위아래 검사, 좌우 검사 2가지이고 5번 감시카메라는 1가지 이다. (사방을 검사하기 때문에) 나머지 감시카메라의 방향 종류는 4가지이다. (90도 회전할 때마다 검사하는 곳이 달라진다) 나는 위를 검사할 때를 0 , 오른쪽 1, 아래쪽 2, 왼쪽을 3으로 인덱스를 둬서 각각 해당방향으로 cctv가 닿는 곳을 검색하는 함수를 따로 구현했다. mark이차배열을 둬서 해당 위..

[백준] 16918번 봄버맨 (java, 구현)

www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 골드 1,2 풀다가 실버 푸니까 더 헷갈리는 것 같다 for문을 돌면서 . 인곳을 O를 표시해주고 터트릴 시간을 적어준다. 큐 없이 풀 수 있는 문제 for문으로 돌면서 체크해놓은 터트리는 시간과 같은 곳을 다시 .으로 만들어준다. package algo0421; import java.util.Scanner; class Pos{ int y,x; public Pos(int y, int x) { super(); this.y = y;..

[백준] 4307번 개미 (java, 구현)

www.acmicpc.net/problem/4307 4307번: 개미 개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된 www.acmicpc.net 최소 시간은 각 개미들이 떨어지는 시간의 최대값을 구해주면 된다. 최대값은 각 개미들의 양 끝 거리 중 더 큰 값의 최대값을 구해주면 된다. package algo0421; import java.util.ArrayList; import java.util.Scanner; public class S_4307_개미_Main { static int t,l,n; static ArrayList list; public ..

[SWEA] 5604. 구간합 (java, 수학)

풀이 참고 mygumi.tistory.com/180 package algo0421; import java.util.Scanner; public class S_5604_구간합_Solution { static long t,a,b; static long[] count; static long point; public static void main(String[] args) { Scanner sc=new Scanner(System.in); count=new long[10]; point=1;//초기화 a=1; b=sc.nextLong(); while(a

[백준] 17609번 회문 (java, 구현)

www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 이중 포문을 안돌고 하는 방법은 양끝에서 비교해나가다가 다른 부분에서 둘 중 하나 삭제해보고 회문이 맞는지 검사하면 되는 문제 모든 곳을 한 번씩 삭제해볼 필요없이 처음 달라지는 부분만! 삭제해보면 된다. package algo0420; import java.util.Scanner; public class B_17609_회문_Main { static int t; static String s; static char[] arr; public s..