츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 1228번 암호문1 자바(Java)
1) 난이도 : D3
2) 문제번호 : 1228번
3) 문제 출처
2. 문제
N X N 크기의 단어 퍼즐을 만들려고 한다. 입력으로 단어 퍼즐의 모양이 주어진다.
주어진 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램을 작성하라.
[예제]
N = 5, K = 3 이고, 퍼즐의 모양이 아래 그림과 같이 주어졌을 때
길이가 3 인 단어가 들어갈 수 있는 자리는 2 곳(가로 1번, 가로 4번)이 된다.
3. 제약사항
-
4. 입력
첫 번째 줄 : 원본 암호문의 길이 N ( 10 ≤ N ≤ 20 의 정수)
두 번째 줄 : 원본 암호문
세 번째 줄 : 명령어의 개수 ( 5 ≤ N ≤ 10 의 정수)
네 번째 줄 : 명령어
위와 같은 네 줄이 한 개의 테스트 케이스이며, 총 10개의 테스트 케이스가 주어진다.
5. 출력
#기호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 수정된 암호문의 처음 10개 항을 출력한다.
6. 풀이
- 링크드리스트(LinkedList)를 이용하여 풀었다.
- 링크드리스트(LinkedList)의 주요 메소드인 add(index, data)는 index 위치 뒤에 data를 넣어준다.
- 예를 들어, 1 2 3 4 5가 있을 때, add(1,6)을 하면 1 2 6 3 4 5가 된다. 그러면 6의 인덱스는 2가 된다.
- 1 2 6 3 4 5 에서 다시 add(2,7)을 하면 1 2 6 7 3 4 5가 된다. 그러면 7의 인덱스는 3이 된다.
- 위의 예시처럼 인덱스는 1씩 증가하여 링크드리스트(LinkedList)에 데이터를 넣어주는 규칙을 발견할 수 있다.
- 출력은 10개만 찍으면 된다.
7. 소스 코드
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int tc=1;tc<=10;tc++) {
LinkedList<Integer> List = new LinkedList<>();
int N = sc.nextInt(); // 원본 암호문의 길이
// 원본 암호문 입력
for (int i = 0; i < N; i++)
List.add(sc.nextInt());
int count = sc.nextInt(); // 명령어 개수
// 명령어 개수만큼 반복
for (int i = 0; i < count; i++) {
String order = sc.next();
int X = sc.nextInt(); // 앞에서부터의 위치
int Y = sc.nextInt(); // 삽입될 숫자 개수
for (int j = 0; j < Y; j++) {
List.add(X, sc.nextInt());
X += 1;
}
}
//출력
System.out.printf("#%d ",tc);
for(int i=0;i<10;i++) {
System.out.print(List.poll() + " ");
}
System.out.println();
}
}
}
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1976번 시각 덧셈 자바(Java) (0) | 2021.02.09 |
---|---|
[SW expert Academy] SWEA 1966번 숫자를 정렬하자 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 1940번 가랏! RC카! 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 9229번 한빈이와 Spot Mart 자바(Java) (0) | 2021.02.09 |
[SW expert Academy] SWEA 1979번 어디에 단어가 들어갈 수 있을까 자바(Java) (0) | 2021.02.07 |
[SW expert Academy] SWEA 1223번 계산기2 자바(Java) (0) | 2021.02.06 |
[SW expert Academy] SWEA 1959번 두 개의 숫자열 자바(Java) (0) | 2021.02.05 |
[SW expert Academy] SWEA 1989번 초심자의 회문 검사 자바(Java) (0) | 2021.02.05 |
최근댓글