백준 78

[백준]1018번 체스판 다시 칠하기 - Java

문제 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 왼쪽 위가 흰색으로 시작하는 체스판, 검은색으로 시작하는 체스판. static char[][] answer1 = new char[][]{ {'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W'}, {'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B'}, {'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W'}, {'W', 'B',..

[백준]2980번 도로와 신호등 - Java

문제 https://www.acmicpc.net/problem/2980 2980번: 도로와 신호등 상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔 www.acmicpc.net 풀이 왜 그랬는지 모르겠는데 % 연산을 / 연산으로 놔두고 왜 안되는지 다 찍어보느라 개ㅐㅐㅐㅐ오랫동안 찾은 것 같다,,, 너무 어이가 없었다 암튼 신호등들의 정보를 배열에 저장해 두었다가 while(true){ } 안에서 time과 current를 증가해주면서 이동시켜 주었다 그러다 상근이가 신호등이 있는 위치에 도달하면 check() 함수에 현재 time과 신호등의 정보를 변수로 넘겨주어 신호..

[백준]2635번 수 이어가기 - Java

문제 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 풀이 문제를 그대로 따라가면서 풀었음 주어지는 수까지 반복문을 돌면서 그 안에서 while(true){ }문 안에서 로직을 수행함 주어지는 수를 연산하면서 나오는 값으로 연산하기 위한 수를 최신화 해줌(0보다 작아질 때까지 반복하기 때문에 wihle(true){ }문 사용) count 를 이용해서 숫자의 개수를 세고 max를 이용해서 최대인 count를 저장함 count가 max가 될 때의 인덱스 i를 answer에 저장한 후, for문을 다 돌고 i일 때로 로직을 수행하는 결과를 StringBuild..

[백준]10163번 색종이 - Java

문제 https://www.acmicpc.net/problem/10163 10163번: 색종이 평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 www.acmicpc.net 풀이 백준에는 뭐 색종이 유니버스가 있나보다 종이 자르기도 있고 무슨 뭐였지 직사각형 면적 더하기 그런 것도 있고,,, 암튼 색종이 첫번째 문제 풀고나서 이런 문제들 푸니까 어떻게 풀어야할지 딱 보인다고 해야하나 암튼 쉬워졌다. https://seokmimmmmmmmm.tistory.com/25 [백준]2563번 색종이 - Java 문제 https://www.acmicpc.net/problem/2..

[백준]2563번 색종이 - Java

문제 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 풀이 처음에 수학적으로 접근하려고 하지말고 문제를 그대로 받아들이는??? 그런 느낌으로하면 그냥 입력받는 문제라고 생각함 ㅋㅋㅋㅋ 처음에는 뭔가 트릭? 같은게 있을 줄 알고 좌표끼리 더하고 빼고 해야되나 했는데 점점 복잡해지길래 뭐지,,, 했는데 문제에서 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지라는 것을 보고 '그냥 하면 되는 문제'구나 싶었다 그 후로는 너무 쉬웠음 ! ..

[백준]10709번 기상캐스터 - Java

문제 https://www.acmicpc.net/problem/10709 10709번: 기상캐스터 출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시 www.acmicpc.net 풀이 많은 이차원배열 탐색 문제 중에서도 쉬운 편이 아닐까 싶음 사방탐색, 팔방탐색 뭐시기뭐시기 많이 있지만 이건 오른쪽 한 방향으로만 탐색하면 되기 때문에 쉽게 풀린 것 같다 출력을 int[][] 형태로 해야하기 때문에 문제를 입력받는 char[][] map 배열과 정답을 저장하여 출력할 int[][] answerMap 배열을 만들어서 사용했음 구름 c를 ..

[백준]2947번 나무 조각 - Java

문제 https://www.acmicpc.net/problem/2947 2947번: 나무 조각 첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다. www.acmicpc.net 풀이 solution함수를 실행해서 상태가 바뀌었으면(true면) 출력 정답을 미리 String answer에 저장해놓고 while문 안에서 answer과 비교해서 같으면 break 후 끝 코드 // 2947번 나무 조각 // https://www.acmicpc.net/problem/2947 package BAEKJOON; import java.io.BufferedReader; import java.io.IOExc..

[백준]3060번 욕심쟁이 돼지 - Java

문제 https://www.acmicpc.net/problem/3060 3060번: 욕심쟁이 돼지 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 두 줄로 구성되어 있고, 첫째 줄에는 하루에 배달되는 사 www.acmicpc.net 풀이 처음에 문제를 읽었을 때는 원형큐를 구현해야하나 했는데 그냥 배열로 해도 되겠다 싶어서 배열로 했음 현수의 돼지들은 기억력이 뛰어나기 때문에 전 날 자신의 양쪽과 맞은편에 앉았던 돼지가 먹었던 양을 기억하고 있다. 또, 욕심도 많기 때문에, 그 만큼의 양을 추가하여 식사를 하기를 원한다. for (int i = 0; i < arr.length; i++) { arr[i] = tempArr..

[백준]14696번 딱지놀이 - Java

문제 https://www.acmicpc.net/problem/14696 14696번: 딱지놀이 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 딱지놀이의 총 라운드 수를 나타내는 자연수 N이 주어진다. N 은 1 이상 1,000 이하이다. 다음 줄에는 라운드 1에서 어린이 A가 내는 딱지에 나 www.acmicpc.net 풀이 단순하고 무식하게 문제가 시키는대로 해서 풀었음. 걍 했음 오히려 입력받는게 헷갈릴 수도,,,??? 코드 // 14696번 딱지놀이 // https://www.acmicpc.net/problem/14696 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..

[백준]13300번 방 배정 - Java

문제 https://www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 12가지의 경우의 수로 나눈다고 생각하고 int[][] arr = new int[6][2]; 이런 배열을 만들어서 해당되는 인덱스의 값을 증가시켜줬음. 증가시켜줄 때는 방 안의 학생 수를 K로 나눈 값이 0보다 크면 (그 값 + 1)만큼 증가시키고, 0이면 나눈 값만 증가시켰음. K로 나눈 값이 0이..

[백준]2559번 수열 - Java

문제 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 풀이 되게 쉬운 문제인듯?? 반복문 안에서 인덱스 가지고 뭐시기뭐시기하면 되는 문제인듯함 포인트는 for (int i = 0; i

[백준]10026번 적록색약 - Java

문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 내 생각에 이 문제의 포인트는 1. dfs로 구현을 할 수 있는지?, 2. 정상인 버전과, 적록색약 버전을 어떻게 따로 할지? 인 것 같음 1. map[][]과 방문 체크 배열 visited[][], 방향 벡터 등 static으로 해야할 것들 밖에다가 static으로 선언 2. 입력 받기 3. dfs 구현 - 현재 탐색 중인 구역의 색깔을 따로 저장해놨다가 다음 탐색 구역의 색깔..

[백준]2628번 종이 자르기 - Java

문제 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 첫줄에는 종이의 가로와 세로의 길이가 차례로 자연수로 주어진다. 가로와 세로의 길이는 최대 100㎝이다. 둘째 줄에는 칼로 잘라야하는 점선의 개수가 주어진다. 셋째 줄부터 마지막 줄까지 한 www.acmicpc.net 풀이 잘랐을 때 가장 큰 가로와 가장 큰 세로를 찾으면 끝나는 문제라고 생각함 자르는 위치를 저장하고 그 위치를 잘랐을 때 잘린 길이를 따로 저장해줬음. 그러기 위해선 (0 ~ 처음 자른 위치), ..., (마지막 자른 위치 ~ 가로/세로의 끝) 부분도 필요했기 때문에 arrayList0.add(0); arrayList1.add(0); arrayList0.add(y); arrayList1.add(..

[백준]2304번 창고 다각형 - Java

문제 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 풀이 2차원 배열에 넣어서 정렬을 하려고 했지만 2차원 배열 정렬 방법을 잘 몰라서 gidoong이라는 클래스를 만들고 Comparable 인터페이스를 이용해서 정렬했음 1. gidoongs[] 에 gidoong 클래스를 차례대로 넣는다. 2. Comparable 인터페이스를 활용하여 compareTo() 메서드를 재정의하여 gidoongs의 x를 기준 오름차순으로 정렬한다...

[백준]10158번 개미 - Java

문제 https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 풀이 처음에는 아무 생각 없이 걍 시뮬로 하면 될 것 같았음. 그래서 했는데? 조졌다리 밑에 오답 코드처럼 노가다로 하다가 하면서도 뭔가 이상한 것 같았음 ㅋㅋㅋㅋ 근데 이미 한거 일단 제출해보자 하고 했는데 역시나 메모리 초과(사실 메모리 초과는 문제 풀면서 첨 보는거 같음) 그리고 문제 다시 봤는데 문제에서 w와 h는 자연수이며 범위는 2 ≤ w,h ≤ 40,000이다...

[백준]10157번 자리배정 - Java

문제 https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net 풀이 1. 처음 방향(상)에서 범위를 벗어나면 방향이 바뀜(우) -> 암튼 상우하좌 로 방향이 바뀜 -> static으로 방향 벡터 설정 2. 문제에서 말이 되지 않는 케이스는 0을 출력하라고 함 -> 0을 출력 후 System.exit(0)으로 시스템 정상 종료 3. 범위를 벗어나거나 map[][] 안에서 0을 만나면 방향을 바꾸고 한칸 전진 시키고 다시 while문 4. ..

[백준]3109번 빵집 - Java

문제 https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 풀이 1. 파이프 설치 진행 방향(필요한 것만, 순서대로 -> 오른쪽 위 대각선, 오른쪽, 오른쪽 아래 대각선) 2. boolena 타입의 check[][] 배열로 다음 진행 방향에 파이프를 설치할 수 있는지 확인 3. 설치가 가능하면 설치하고 check배열을 true로 바꿔준 후 solution함수 재귀 호출 4. 마지막 열에 도착할 때마다 answer++ 코드 // 3109번 - 빵집 // https:/..

[백준]1158번 요세푸스 문제 - Java

문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 풀이 1. 큐에 순서대로 삽입 2. flag라는 변수를 사용해 3일때마다 번호를 제거 3. 제거 후에 flag를 0으로 초기화 4. 큐의 사이즈가 0이 될 때까지 반복 코드 // 1158번 요세푸스 문제 // https://www.acmicpc.net/problem/1158 package BAEKJOON; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Sc..