시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Back_3048 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N1 = Integer.parseInt(st.nextToken());
int N2 = Integer.parseInt(st.nextToken());
String t1=br.readLine();
char[] tmp1 = new char[N1];
for (int i = 0; i < N1; i++) {
tmp1[i]=t1.charAt(N1-i-1);
}
char[] tmp2 = br.readLine().toCharArray();
char ants[]= new char[N1+N2];
int dir[] = new int[N1+N2];
for(int i = 0 ; i < N1;i++) {
ants[i]=tmp1[i];
dir[i]=1;
}
for (int i = N1; i < N1+N2; i++) {
ants[i]=tmp2[i-N1];
dir[i]=2;
}
int T = Integer.parseInt(br.readLine());
while(T>0) {
T--;
for (int i = 0; i < N1+N2-1; i++) {
if(dir[i]==1&&dir[i+1]==2) {
char t = ants[i];
ants[i]=ants[i+1];
ants[i+1]=t;
int td = dir[i];
dir[i]=dir[i+1];
dir[i+1]=td;
i++;
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N1+N2; i++) {
sb.append(ants[i]);
}
System.out.println(sb);
}
}
※ 내 생각
이 문제는 문자열을 이용하는 문제입니다.
각각의 문자열을 배열에 담아줍니다.
이동하는 횟수 만큼 While를 돌려서 위치를 바꿔줍니다.
바꾸는 과정에서는 SWAP을 이용해서 위치를 바꿨습니다.
이동하는 방향을 정방향은 1 반대 방향은 2로 했으며,
스왑이 되면 다시 바뀌지 않게 방향을 바꿔줘야합니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_2257 화학식량(자바) / 문자열 (0) | 2021.11.04 |
---|---|
백준_1448 삼각형 만들기(자바) / 그리디 (0) | 2021.11.03 |
백준_16916 부분 문자열(자바) / 문자열(KMP) (0) | 2021.10.31 |
백준_8911 거북이(자바) / 시뮬레이션 (0) | 2021.10.29 |
백준_16435 스네이크버드(자바) / 그리디 (0) | 2021.10.28 |