반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1228번 암호문1 자바(Java)

1) 난이도 : D3

 

2) 문제번호 : 1228번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14w-rKAHACFAYD&categoryId=AV14w-rKAHACFAYD&categoryType=CODE&problemTitle=%EC%95%94%ED%98%B8%EB%AC%B8&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

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();
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기