[자료구조] 02 실습 및 과제

안우진·2024년 3월 28일

자료구조

목록 보기
4/12

투포인터

[실습]

public class Assignment {
	private final int[] arr;
	
	public Assignment(int[] inputs) {
		arr = inputs;
	}
	
	public void twoPointer(int target) {
		int start = 0;
		int end = arr.length - 1;
		boolean isExsist = false;
		while (start < end) {
			if (arr[start] + arr[end] > target) end--;
			else if (arr[start] + arr[end] < target) start++;
			else {
				System.out.println(arr[start] + " + " + arr[end] + " = " + target);
				start++; end--;
				isExsist = true;
			}
		}
		if (!isExsist) {
			System.out.println("None");
		}
	}
}

[과제]

[MainJava]

import java.util.ArrayList;

public class MainJava {

	public static void main(String[] args) {
		InputManager inputManager = new InputManager();
		ArrayList<String> inputs = inputManager.getFileContents("input.txt");
		for (String item : inputs) {
			int[] input = inputManager.getInt(item);
			Assignment assignment = new Assignment(input);
			assignment.assignment();
		}
	}
}

[InputManager]

import java.io.*;
import java.util.ArrayList;

public class InputManager {
	
	public int[] getInt(String content) {
		String[] temp = content.split(" ");
		int[] res = new int[temp.length];
		for (int i=0; i<temp.length; i++) {
			res[i] = Integer.parseInt(temp[i]);
		}
		return res;
	}
	
	public ArrayList<String> getFileContents(String path) {
		ArrayList<String> res = new ArrayList<String>();
		try {
			File file = new File(path);
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			String line;
			while ((line = br.readLine()) != null) {
				res.add(line);
			}
			br.close();
			fr.close();
			return res;
		} catch (FileNotFoundException e) {
			System.out.println("FileNotFoundException");
		} catch (IOException e) {
			System.out.println("IOException");
		}
		return null;
	}
}

[Assignment]

public class Assignment {
	private final int[] inputs;
	
	public Assignment(int[] inputs) {
		this.inputs = inputs;
	}
	
	public void assignment() {
		int start = 0;
		int end = inputs.length - 1;
		while (start < end) {
			if (inputs[start]%2 == 1 && inputs[end]%2 == 0) {
				int temp = inputs[start];
				inputs[start] = inputs[end];
				inputs[end] = temp;
				start++; end--;
			} else {
				if (inputs[start]%2 == 0) {
					start++;
				}
				if (inputs[end]%2 == 1) {
					end--;
				}
			}
		}
		for (int item : inputs) {
			System.out.print(item + " ");
		}
		System.out.println();
	}
}

0개의 댓글