본문 바로가기

문제 풀이30

1220번 - Magnetic 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 빨간색 자성체는 S극을 향해가고 파란색 자성체는 N극을 향해 갔을 때 짝을 이루게 되는 그룹의 개수를 구하는 문제이다. 처음에는 포문을 돌리면서 모든 자성체들을 한 칸씩 한 칸씩 이동시켜야 하나...? 라는 생각을 했는데 O(n³) 정도 나올 것 같아서 이건 아니다 싶었고... 어차피 자성체의 최종 위치 따위가 필요한 게 아니라 짝을 이루는 지를 판단하면 되기 때문에 세로 방향으로 쭉 읽으면서 검사하는 방법을 사용했다. flag를 이용해서 짝을 찾으면 cnt++ 하는 식으로 코드를 짜니 쉽게 문제가 풀렸다. 2... 2021. 8. 2.
1208번 - Flatten 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 블록을 움직여서 최고점과 최저점의 차이를 최소로 줄였을 때, 그 차이를 출력하는 문제이다. 만약 블록을 움직이는 횟수에 제한이 없다면 아주 쉬운 문제가 됐을 것이다. 차이가 0 아니면 1이 나왔을 테니까. 하지만 이 문제는 이동 횟수가 정해져 있다. 문제에서 요구하는 동작은 기본적으로 다음과 같다. "가장 높은 곳에서 블록을 가져와 가장 낮은 곳으로 옮겨라" 가장 높은 곳을 찾아서 -1을 하고 가장 낮은 곳을 찾아서 +1을 하면 된다는 뜻이다. 이를 이동 횟수만큼 반복하면 된다. 처음에는 포문을 돌면서 최댓값 최.. 2021. 8. 2.
1209번 - Sum 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 해석을 딱히 적을 게 없는 문제이다. (...) 여러 방향으로 배열 탐색을 연습시키기 위해서 낸 문제인 듯하다. 가로 방향, 세로 방향, 대각선, 역대각선 이렇게 총 4개의 포문이 필요할 것 같지만 조금 생각해보면 가로/세로 방향, 대각/역대각선 이렇게 2번의 포문으로 해결할 수 있다. 2. 코드 public class Day2_1209_Sum { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedR.. 2021. 8. 2.
1206번 - View 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 위 문제에서 요구하는 '조망권이 확보된 세대'란 결국 '나'를 기준으로 왼쪽 두 아파트와 오른쪽 두 아파트가 더 낮아야 한다. 그래야 조망권이 확보될 테니까. 그렇게 주변 아파트보다 현재 기준이 되는 아파트가 더 높다면 이제 고려해야 할 것은 몇 개의 세대가 조망권이 확보되었는가이다. 이는 '나'를 제외하고 가장 높은 아파트의 층수로 구할 수 있다. 예를 들어 B를 기준으로 봤을 때 B를 제외하고 B주변에서 가장 높은 아파트는 C임을 알 수 있다. B의 층수에서 C의 층수를 빼면 간단하게 조망권 세대수를 구할 수.. 2021. 8. 1.
1204번 - 최빈수 구하기 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 쉽게 말해서 입력 값 중에 가장 많이 나온 숫자를 출력하는 문제이다. 여러 가지 방법이 있을 수 있겠지만 카운팅 정렬이 가장 빠른 결과를 얻어낼 수 있는 방법이라고 생각했다. 카운팅 정렬은 입력 값의 범위가 적을 때 유용하다는 특징이 있는데 점수가 0점에서 100점 사이니 아주 적절하다고 할 수 있다. 2. 코드 public class Day1_1204_최빈수구하기 { public static void main(String[] args) throws IOException { final int MAX = 101; .. 2021. 8. 1.