본문 바로가기

삼성15

1219번 - 길찾기 1. 문제 1-1. 링크 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1-2. 문제 해석 A에서 B로 가는 길이 존재하는지를 묻는 문제이다. 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)으로 풀 수 있는데 나는 익숙한 DFS로 풀었다. 문제를 풀기 위해 알아두면 좋은 내용은 다음과 같다. 데이터 저장 가이드와 입력 우선 문제에서 주어진 [데이터 저장 가이드]와 [입력]을 유심히 볼 필요가 있다. 만약 한 정점에서 길이 N개로 갈릴 수 있다고 하면 NxN 배열을 선언해서 정점과 정점의 관계를 저장해야 할 텐데 이 문제에서는 최대 2개의.. 2021. 8. 7.
1215번 - 회문1 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 가로 방향으로 이중 포문 한 번, 세로 방향으로 이중 포문 한 번 사용해서 회문을 찾아야 할 것 같지만 이 문제는 1209번 - Sum 문제처럼 이중 포문 하나로 가로/세로 방향을 탐색할 수 있다. 이 점이 시간 단축을 하는데에 가장 중요한 요소가 아니었나 싶다. 그리고 회문 검사를 할 때 앞 글자와 뒤 글자를 하나씩 비교하는 부분이 은근히 헷갈리기 때문에 유의해야 한다. 회문의 첫 번째 글자 좌표, 회문의 길이, 포문 이렇게 3가지만 있으면 회문 검사를 할 수 있다. 2. 코드 public class Day3_.. 2021. 8. 4.
1213번 - String 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 쉬어가는 문제인 것 같다. (휴) 처음에는 replaceAll을 이용해서 찾을 문자열을 전부 다 '@'로 바꿔버리고 contains를 이용해서 @의 개수를 세서 리턴하려고 했는데 문자열을 이리저리 자르고 붙이고 가지고 놀아보라는 문제 의도에 벗어나서 문자열을 자르는 substring만 사용했다. (사실 정규식을 잘 몰라서 실패했...) 2. 코드 public class Day3_1213_문자열 { public static void main(String[] args) throws IOException { Buffe.. 2021. 8. 3.
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.