코드

class Main {
	public int DFS(int n){
		if(n==1) {
			System.out.print(1 + " = ");
			return 1;
		} else {
			System.out.print(n + " * ");
			return n*DFS(n-1);
		}
	}
	public static void main(String[] args){
		Main T = new Main();
		System.out.println(T.DFS(10));
		int sum = 1;
		for (int i = 1; i <= 10; i++) {
			sum *= i;
			if(i==10) System.out.print(i+" = " + sum);
			else System.out.print(i + " * ");
		}
		
		
	}	
}

결과

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3628800
1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 3628800

 

'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글

이분검색  (0) 2023.02.16
피보나치 수열  (0) 2023.02.13
이진수 구하기(재귀)  (0) 2023.02.08
재귀함수  (0) 2023.02.05
뮤직비디오  (0) 2022.12.20

코드

class Main {
	public void DFS(int n){
		if(n==0) {
			System.out.println();
			return;
		}
		else{
			DFS(n/2);
			System.out.print(n%2);
		}
	}
	public void solution(int n){
		DFS(n);
	}
	public static void main(String[] args){
		Main T = new Main();
		T.solution(8389017);
		T.solution(16678809);
		T.solution(16359297);
		T.solution(15198105);
		T.solution(10484121);
		T.solution(16777215);
		T.solution(12583161);
		System.out.println();
		System.out.println(Integer.toBinaryString(16776441));
		System.out.println(Integer.toBinaryString(16776441));
		System.out.println(Integer.toBinaryString(8388633));
		System.out.println(Integer.toBinaryString(16728057));
		System.out.println(Integer.toBinaryString(16728057));
		System.out.println(Integer.toBinaryString(16728057));
	}	
}

결과


100000000000000110011001
111111100111111110011001
111110011001111110000001
111001111110011110011001
100111111111100110011001
111111111111111111111111
110000000000000011111001
111111111111110011111001
111111111111110011111001
100000000000000000011001
111111110011111111111001
111111110011111111111001
111111110011111111111001

 

'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글

피보나치 수열  (0) 2023.02.13
팩토리얼 (재귀)  (0) 2023.02.11
재귀함수  (0) 2023.02.05
뮤직비디오  (0) 2022.12.20
마구간 정하기  (0) 2022.12.17

 

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class MyFile {
	static int fileCount = 0;
	static int dirCount = 0;
	
	public static void main(String[] args) throws IOException {
    //폴더 경로
		String src = "C:\\Users\\kks\\Documents\\0000\\abc";
		String dst = "C:\\Users\\kks\\Documents\\0000\\def";
		String tmpDir = "C:\\Users\\kks\\Documents\\0000\\temp";
				
		if(new File(src).isDirectory()&& new File(tmpDir).isDirectory()) {
			fileMove(src, tmpDir, false);
			fileMove(tmpDir, dst, true);
		}
		System.out.println("총 파일 : "+ fileCount);
		System.out.println("총 폴더 : "+ dirCount);
		
	}
	
	private static void fileMove(String src, String dst , boolean srcDelete) throws IOException {
		File srcFile = new File(src);
		FileInputStream in = null;
		BufferedInputStream bis = null;
		
		FileOutputStream out = null;
		BufferedOutputStream bos = null;
		
		File[] files = srcFile.listFiles();
		for(File file : files) {
			File dstFile = new File(dst+"\\"+file.getName());
			if(srcDelete) {
            // JVM 종료 시 삭제 
				file.deleteOnExit();
			}
			
			if(file.isDirectory()) {
				dirCount++;
				dstFile.mkdir();
				fileMove(file.getAbsolutePath(), dst+"\\"+file.getName(), srcDelete);
				
			}else {
				fileCount++;
				in = new FileInputStream(file);
				bis = new BufferedInputStream(in);
				
				out = new FileOutputStream(dstFile);
				bos = new BufferedOutputStream(out);
				
				int data = 0;
				while ((data = bis.read())!= -1 ) {
					bos.write(data);
				}
				bos.close();
				bis.close();
			}
		}
	}
}

 

출발지 폴더, 임시 폴더, 목적지 폴더를 정해 파일을 옮기는 예제

폴더 내의 파일 중 폴더가 있으면 재귀 호출

'개발 > 자바(JAVA)' 카테고리의 다른 글

객체 지향 - 2  (0) 2023.01.27
객체 지향 - 1  (0) 2023.01.25
변수의 타입  (0) 2022.07.07
변수  (0) 2022.07.03
자바란?  (0) 2022.07.02
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileDirectoryEx01 {
	static int dirCount = 0;
	static int fileCount = 0;
	
	public static void main(String[] args) throws IOException {
		
		Long startTime = System.currentTimeMillis();
		dirSearch("C:\\spring");
		System.out.println("디렉토리 수		: "+ dirCount);
		System.out.println("파일 수		: "+ fileCount);
		System.out.println("소요시간           : "+ ((System.currentTimeMillis()-startTime)/1000));
		
	}
	
	public static void dirSearch(String dirName) throws MalformedURLException {
		File file = new File(dirName);
		
		for(File f:file.listFiles()) {
			formatter(f);
			if(f.isDirectory()) {
				dirSearch(f.toString());
			}
		}
	}
	
	public static void formatter(File file) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		StringBuilder sb = new StringBuilder(100);
		sb.append(df.format(new Date(file.lastModified())));
		if(file.isDirectory()) {
			sb.append(" [DIR] ");
			dirCount++;
		}else {
			fileCount++;
			sb.append(file.canRead() ? " [R": "[ ");
			sb.append(file.canWrite() ? "W" : " ");
			sb.append(file.canExecute() ? "E]" : " ]");
		}
		
		System.out.printf("%s %6s %s %n", sb.toString(), file.length(), file.toString() );
		
	}
}


핵심 키워드

  • 재귀
  • StringBuilder 내부 버퍼
  • 날짜 형식화

'개발 > 자바(JAVA)' 카테고리의 다른 글

파일 옮기기  (0) 2022.07.25
변수의 타입  (0) 2022.07.07
변수  (0) 2022.07.03
자바란?  (0) 2022.07.02
File  (0) 2022.05.26

+ Recent posts