ํ”ผ๋“œ๋ฐฑ&ํšŒ๊ณ /Monthly Feedback

2023๋…„ 3์›” ์›”๊ฐ„ํšŒ๊ณ 

์ฑ”๐Ÿป 2024. 1. 24. 20:07

์„ ์ƒ๋‹˜ ์ฒ˜์Œ ๋ตˆ์—ˆ์„ ๋•Œ๋Š” ์—ฐ์˜ˆ์ธ ๋ณด๋Š” ๊ธฐ๋ถ„์ด์—ˆ๋‹ค.

ํ™”๋ฉด์—์„œ๋งŒ ๋ตˆ๋˜ ๋ถ„์ด ์‹ค์ œ๋กœ ๋ˆˆ ์•ž์—์„œ ์›€์ง์ด๋‹ˆ๊นŒ ์‹ ๊ธฐํ•˜๊ณ  ๋ง‰ ๊ทธ๋žฌ๋‹ค

์–ป์€ ๊ฒƒ

์„ค๊ณ„์˜ ์ค‘์š”์„ฑ

์ฝ”๋“œ ์งค ๋•Œ ๋ฌดํ„ฑ๋Œ€๊ณ  for๋ฌธ, if๋ฌธ ์“ฐ๋Š” ์Šต๊ด€์ด ๋‚˜์•„์กŒ๋‹ค. ์„ ์ƒ๋‹˜๊ป˜ ๋ฐฐ์šฐ๊ธฐ ์ „๊นŒ์ง€๋Š” ์ด๊ฒŒ ์•ˆ ์ข‹์€ ์Šต๊ด€์ด๊ณ  ์ž˜๋ชป๋œ ๊ฑด์ง€ ์ธ์ง€์กฐ์ฐจ ๋ชป ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์„ ์ƒ๋‹˜ ๋ง์”€ ๋“ค์–ด๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์™œ ๊ทธ๋™ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ธ๊ณ  ์‹ค๋ ฅ์ด ๋Š˜์ง€ ์•Š์•˜๋Š”์ง€ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด์„œ ์•Œ์ง€ ๋ชปํ–ˆ๊ณ  ํ•ญ์ƒ ์ฝ”๋”ฉ์—๋งŒ ์ง‘์ฐฉํ•˜๊ณ  ๊ทธ๊ฒŒ ์ „๋ถ€์ธ ์ค„ ์•„๋‹ˆ ์‹ค๋ ฅ์ด ์•ˆ ๋Š˜์ง€..!

ํ”„๋กœ๊ทธ๋ž˜๋ฐ = ์„ค๊ณ„(90%) + ์ฝ”๋”ฉ(10%)

์ฝ”๋”ฉ์— ์ง‘์ฐฉํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋Š”๋ฐ ์ฝ”๋”ฉ์€ ๊ทธ์ € ์„ค๊ณ„ํ•œ ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ์„ค๊ณ„๊ฐ€ ์ž˜ ๋˜์–ด์•ผ ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์—ฌ์•ผ ํ•œ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์•„๋ฌด ์ƒ๊ฐ๋„ ํ•˜์ง€ ์•Š๊ณ  for๋ฌธ if๋ฌธ ์น˜๋Š” ๊ฑฐ ์ข‹์ง€ ์•Š๋‹ค. ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์งœ๊ฒ ๋‹ค ์ƒ๊ฐ ์ •๋ฆฌ(์„ค๊ณ„๋ฅผ ๋จผ์ €ํ•˜๊ณ ) ์ฝ”๋“œ๋ฅผ ์งœ์•ผ ํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์„ ๋‚ ๋ฆฌ๋ฉด ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€? ์ด๋Ÿฐ ์ƒ์‹์ ์ธ ๋ถ€๋ถ„์œผ๋กœ ์ ‘๊ทผ. ๋ญ˜ ํ• ์ง€ ํ•œ๊ธ€๋กœ ๋จผ์ € ์ ๊ณ  ํ•˜๋‚˜์”ฉ ๊ตฌํ˜„ํ•˜์ž. ํ๋ฆ„์ด ํ‹€๋ฆฐ ๊ฒŒ ์—†๋Š”์ง€ ํ•œ๊ธ€๋กœ ๋จผ์ € ์ฒดํฌ๋ฅผ ํ•ด๋ณด๊ณ  ๊ตฌํ˜„(์ฝ”๋”ฉ)์„ ํ•ด์•ผ ํ•œ๋‹ค.

์„ค๊ณ„ = ๊ทธ๋ฆฌ๊ธฐ = ๊ตฌ์กฐ & ๋ฐฐ์น˜ ๋งŽ์ด ๊ทธ๋ ค๋ณด์ž!

1, 2์ผ์ฐจ ๋ณ„์ฐ๊ธฐ

์ฒซ๋‚  ์™€์„œ ํ’€์–ด๋ณธ ๊ฒŒ ๋ณ„์ฐ๊ธฐ์˜€๋Š”๋ฐ ๊ฒฝ๋ ฅ๋„ ์žˆ์œผ๋ฉด์„œ ์ด๊ฒƒ๋„ ์ œ๋Œ€๋กœ ๋ชปํ•œ๋‹ค๋Š” ๋‚ด ์‹ค๋ ฅ์— ํ˜„ํƒ€์™”์—ˆ๋‹ค ์ฝ”๋“œ๋„ ์ง„์งœ ๊ฐœํŒ์ด๊ณ โ€ฆ. ์™„์ „ ์–ด๊ฑฐ์ง€๋กœ ์งœ๊ณ โ€ฆ.

1์ผ์ฐจ

int row = 5;
int col = 9;

int test = 1;

for (int i = row; i > 0; i--) {
    for (int j = 0; j < col-5; j++) {
        System.out.print(" ");
    }

    for (int x = 0; x < test; x++) {
        System.out.print("*");
    }

    // for (int z = 0; z < col-5; z++) {
    //     System.out.print(" ");
    // }
    
    System.out.println();
    col--;
    test += 2;
}

2์ผ์ฐจ์— ์„ค๊ณ„, ๊ทธ๋ฆฌ๋Š” ์—ฐ์Šต์„ ํ†ตํ•ด ๊ทœ์น™์„ ์ฐพ์•„์„œ ์„ค๊ณ„ ํ›„ ๊ตฌํ˜„ํ•ด๋ณด๋‹ˆ ์™ผ์ชฝ ์ฝ”๋“œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ”๋€œ..!!!

2์ผ์ฐจ

int start = 5, end = 5;
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 9; j++) {
        if ( start <= j && j <= end ) {
            System.out.printf("*");
        } else { 
            System.out.print(" ");
        }
    }
    start--; end++;
    System.out.println();
}

1์ฃผ์ฐจ : mid๊ฐ’ ๊ตฌํ•˜๊ธฐ
๐Ÿ’ก
์„ธ๊ฐœ์˜ ์ˆ˜ ์ค‘์— ๋‘๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  Test
// 3๊ฐœ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ๊ทธ ์ค‘์— ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ 
// mid(int x, int y, int z)
// ์ž…๋ ฅ : 3๊ฐœ์˜ ์ •์ˆ˜
// ์ถœ๋ ฅ : 1๊ฐœ์˜ ์ •์ˆ˜
// ๋ฉ”์„œ๋“œ ์ด๋ฆ„ : mid

์‹œ๋„1

ํ’€์ด๊ณผ์ •

์‹œ๋„2

ํ’€์ด๊ณผ์ •
  • ์ฝ”๋“œ
    import static org.junit.jupiter.api.Assertions.*;
    
    import java.util.Arrays;
    
    import org.junit.jupiter.api.Test;
    
    class MethodTest {
    	// 3๊ฐœ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ๊ทธ ์ค‘์— ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ 
    	// mid(int x, int y, int z)
    	// ์ž…๋ ฅ : 3๊ฐœ์˜ ์ •์ˆ˜
    	// ์ถœ๋ ฅ : 1๊ฐœ์˜ ์ •์ˆ˜
    	// ๋ฉ”์„œ๋“œ ์ด๋ฆ„ : mid
    	
        static int mid(int x, int y, int z) {
        	int[] num = {x, y, z};
        	int max = -1, maxIdx = -1; // max ๊ฐ’, result ๋ฐฐ์—ด max ๊ฐ’์˜ index
        	String mid = "";
        	
            // ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์˜ index๋ฅผ ๊ตฌํ•œ๋‹ค.
            for (int i = 0; i < num.length; i++) {
                if (max < num[i]) {
                	max = num[i];
                	maxIdx = i;
                }
            }
            
            // ์ตœ๋Œ€๊ฐ’์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
            for (int i = 0; i < num.length; i++)
            	if (i != maxIdx) mid += num[i]; 
            
            // ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’์ค‘ ๋” ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
        	return mid.charAt(0) > mid.charAt(1) ? (int) mid.charAt(0) - '0' : (int) mid.charAt(1) - '0';
    
        }
    	
    	@Test
    	void test() { // ์ค‘๋ณต๊ฐ’ X - ์ตœ์†Œ๊ฐ’๋ณด๋‹ค๋Š” ํฌ๊ณ  ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค๋Š” ์ž‘๋‹ค.
    		assertTrue(mid(1, 2, 3)==2);
    	}
    
    	@Test
    	void test2() { // ์ตœ๋Œ€๊ฐ’๋ณด๋‹จ ์ž‘์€๋ฐ ๋™์ผํ•œ ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’ 
    		assertTrue(mid(2, 2, 3)==2);
    	}
    
    	@Test
    	void test3() { // ์ตœ์†Œ๊ฐ’๋ณด๋‹ค๋Š” ํฐ๋ฐ ๋™์ผํ•œ ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’ 
    		assertTrue(mid(2, 3, 3)==3);
    	}
    	
    	@Test
    	void test4() { // ์„ธ ๊ฐ’์ด ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค.
    		assertTrue(mid(1, 1, 1)==1);
    	}
    }

์‹œ๋„3

  • ์ฝ”๋“œ
    import static org.junit.jupiter.api.Assertions.*;
    
    import java.util.Arrays;
    
    import org.junit.jupiter.api.Test;
    
    class MidTest {
    	// 3๊ฐœ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ๊ทธ ์ค‘์— ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ 
    	// mid(int x, int y, int z)
    	// ์ž…๋ ฅ : 3๊ฐœ์˜ ์ •์ˆ˜
    	// ์ถœ๋ ฅ : 1๊ฐœ์˜ ์ •์ˆ˜
    	// ๋ฉ”์„œ๋“œ ์ด๋ฆ„ : mid
    	
        static int mid(int x, int y, int z) { // 1, 2, 3
        	int max = x > y ? x : (y > z ? y : z);
        	
        	if (max == x) {
        		return y > z ? y : z;
        	} else if (max == y){
        		return x > z ? x : z;
        	} else { // max == z
        		return x > y ? x : y;
        	}
        }
    	
    	@Test
    	void test() { // ์ค‘๋ณต๊ฐ’ X - ์ตœ์†Œ๊ฐ’๋ณด๋‹ค๋Š” ํฌ๊ณ  ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค๋Š” ์ž‘๋‹ค.
    		assertTrue(mid(1, 2, 3)==2);
    	}
    
    	@Test
    	void test2() { // ์ตœ๋Œ€๊ฐ’๋ณด๋‹จ ์ž‘์€๋ฐ ๋™์ผํ•œ ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’ 
    		assertTrue(mid(2, 2, 3)==2);
    	}
    
    	@Test
    	void test3() { // ์ตœ์†Œ๊ฐ’๋ณด๋‹ค๋Š” ํฐ๋ฐ ๋™์ผํ•œ ๋‚˜๋จธ์ง€ ๋‘ ๊ฐ’ 
    		assertTrue(mid(2, 3, 3)==3);
    	}
    	
    	@Test
    	void test4() { // ์„ธ ๊ฐ’์ด ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค.
    		assertTrue(mid(1, 1, 1)==1);
    	}
    }

1์ฃผ์ฐจ : ๋น™๊ณ  ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” bingoCnt()๋ฅผ ์ž‘์„ฑ

11

ํ’€์ด๊ณผ์ •
  • ์ฝ”๋“œ
    import static org.junit.jupiter.api.Assertions.*;
    
    import java.util.Arrays;
    
    import org.junit.jupiter.api.Test;
    
    class BingoTest {
    	// 5 X 5 ๋ฐฐ์—ด์˜ ๋น™๊ณ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” bingoCnt()๋ฅผ ์ž‘์„ฑ 
    	// ์ž…๋ ฅ : int 2์ฐจ์› ๋ฐฐ์—ด(๋น™๊ณ ํŒ) 
    	// ์ถœ๋ ฅ : int(๋น™๊ณ ๊ฐฏ์ˆ˜) 
    	// ๋ฉ”์„œ๋“œ ์ด๋ฆ„ : bingoCnt()
    	
    	int bingoCnt(int[][] bingo) {
    		int garoTmp = 0;             // ๊ฐ€๋กœ ๋น™๊ณ  
    		int[] seroTmp = new int[5];  // ์„ธ๋กœ ๋น™๊ณ  
    		int[] diagonal = new int[2]; // ๋Œ€๊ฐ์„  ๋น™๊ณ  
    		int result = 0;
    		
    		for (int i = 0; i < bingo.length; i++) {
    			for (int j = 0; j < bingo[i].length; j++) {
    				if (bingo[i][j] == 1) {
    					garoTmp++;
    					seroTmp[j]++;
    					if (i == j) diagonal[0]++;
    					if (i + j == 4)	diagonal[1]++;
    				} 
    			}
    			if (garoTmp == 5) result++;
    			garoTmp = 0;
    		}
    		
    		for (int i = 0; i < seroTmp.length; i++) 
    			if (seroTmp[i] == 5) result++;
    		
    		for (int i = 0; i < diagonal.length; i++)
    			if (diagonal[i] == 5) result++;
    		
    		return result;
    	}
    	
    	@Test
    	void seroAndGarAndDiagonal() { // 3๋น™๊ณ  : ์„ธ๋กœ & ๊ฐ€๋กœ & ๋Œ€๊ฐ์„  
    		int[][] bingo = {
    				{1,0,0,0,1},
    				{1,1,1,1,1},
    				{1,0,1,0,0},
    				{1,1,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 3);
    	}
    	
    	@Test
    	void seroAndGaro() { // 2๋น™๊ณ  : ์„ธ๋กœ & ๊ฐ€๋กœ 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{1,1,1,1,1},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void diagonalThree() { // 2๋น™๊ณ  : ๋Œ€๊ฐ์„  ์™ผ -> ์˜ค && ์˜ค -> ์™ผ
    		int[][] bingo = {
    				{1,0,0,0,1},
    				{0,1,0,1,0},
    				{0,0,1,0,0},
    				{0,1,0,1,0},
    				{1,0,0,0,1},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    
    	@Test
    	void diagonalTwo() { // 1๋น™๊ณ  : ๋Œ€๊ฐ์„  ์˜ค -> ์™ผ  
    		int[][] bingo = {
    				{0,0,0,0,1},
    				{0,0,0,1,0},
    				{0,0,1,0,0},
    				{0,1,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    
    	@Test
    	void diagonalOne() { // 1๋น™๊ณ  : ๋Œ€๊ฐ์„  ์™ผ -> ์˜ค 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{0,1,0,0,0},
    				{0,0,1,0,0},
    				{0,0,0,1,0},
    				{0,0,0,0,1},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    	
    	@Test
    	void seroTwo() { // 2๋น™๊ณ  : ์„ธ๋กœ ๋‘ ์ค„   
    		int[][] bingo = {
    				{1,1,0,0,0},
    				{1,1,0,0,0},
    				{1,1,0,0,0},
    				{1,1,0,0,0},
    				{1,1,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void garoOne() { // 1๋น™๊ณ  : ๊ฐ€๋กœ ํ•œ ์ค„ 
    		int[][] bingo = {
    				{1,1,1,1,1},
    				{0,0,0,0,0},
    				{0,0,0,0,0},
    				{0,0,0,0,0},
    				{0,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    	
    	@Test
    	void garoTwo() { // 2๋น™๊ณ  : ๊ฐ€๋กœ ๋‘ ์ค„  
    		int[][] bingo = {
    				{1,1,1,1,1},
    				{0,0,0,0,0},
    				{0,0,0,0,0},
    				{1,1,1,1,1},
    				{0,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void seroOne() { // 1๋น™๊ณ  : ์„ธ๋กœ ํ•œ ์ค„ 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    
    
    }

1์—์„œ for๋ฌธ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๊ณ  1๊ฐœ๋กœ ์ค„์ด๋ผ๊ณ  ํ•˜์…”์„œ ๋‹ค์‹œ..!

ํ’€์ด๊ณผ์ •
  • ์ฝ”๋“œ
    import static org.junit.jupiter.api.Assertions.*;
    
    import java.util.Arrays;
    
    import org.junit.jupiter.api.Test;
    
    class BingoTest {
    	// 5 X 5 ๋ฐฐ์—ด์˜ ๋น™๊ณ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” bingoCnt()๋ฅผ ์ž‘์„ฑ 
    	// ์ž…๋ ฅ : int 2์ฐจ์› ๋ฐฐ์—ด(๋น™๊ณ ํŒ) 
    	// ์ถœ๋ ฅ : int(๋น™๊ณ ๊ฐฏ์ˆ˜) 
    	// ๋ฉ”์„œ๋“œ ์ด๋ฆ„ : bingoCnt()
    	
    	int bingoCnt(int[][] bingoArr) {
    		int garoCnt = 0;   // ๊ฐ€๋กœ ๋น™๊ณ  
    		int seroCnt = 0;   // ์„ธ๋กœ ๋น™๊ณ  
    		int crossCnt1 = 0; // ๋Œ€๊ฐ์„ 1 x == y
    		int crossCnt2 = 0; // ๋Œ€๊ฐ์„ 2 x + y == 4
    		int result = 0;
    		
    		for (int i = 0; i < bingoArr.length; i++) {
    			if (bingoArr[i][i] == 1) crossCnt1++;
    			if (bingoArr[i][4-i] == 1) crossCnt2++;
    			
    			for (int j = 0; j < bingoArr.length; j++) {
    				if (bingoArr[i][j] == 1) garoCnt++;
    				if (bingoArr[j][i] == 1) seroCnt++;
    			}
    			if (garoCnt == 5) result++;
    			if (seroCnt == 5) result++;
    			garoCnt = 0; seroCnt = 0;
    		}
    		
    		if (crossCnt1 == 5) result++;
    		if (crossCnt2 == 5) result++;
    		
    		return result;
    	}
    	
    	@Test
    	void all() { 
    		int[][] bingo = {
    				{1,1,1,1,1},
    				{1,1,1,1,1},
    				{1,1,1,1,1},
    				{1,1,1,1,1},
    				{1,1,1,1,1},
    		};
    		assertTrue(bingoCnt(bingo) == 12);
    	}
    	
    	@Test
    	void seroAndGarAndDiagonal() { // 3๋น™๊ณ  : ์„ธ๋กœ & ๊ฐ€๋กœ & ๋Œ€๊ฐ์„  
    		int[][] bingo = {
    				{1,0,0,0,1},
    				{1,1,1,1,1},
    				{1,0,1,0,0},
    				{1,1,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 3);
    	}
    	
    	@Test
    	void seroAndGaro() { // 2๋น™๊ณ  : ์„ธ๋กœ & ๊ฐ€๋กœ 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{1,1,1,1,1},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void diagonalThree() { // 2๋น™๊ณ  : ๋Œ€๊ฐ์„  ์™ผ -> ์˜ค && ์˜ค -> ์™ผ
    		int[][] bingo = {
    				{1,0,0,0,1},
    				{0,1,0,1,0},
    				{0,0,1,0,0},
    				{0,1,0,1,0},
    				{1,0,0,0,1},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    
    	@Test
    	void diagonalTwo() { // 1๋น™๊ณ  : ๋Œ€๊ฐ์„  ์˜ค -> ์™ผ  
    		int[][] bingo = {
    				{0,0,0,0,1},
    				{0,0,0,1,0},
    				{0,0,1,0,1},
    				{0,1,0,0,0},
    				{1,0,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    
    	@Test
    	void diagonalOne() { // 1๋น™๊ณ  : ๋Œ€๊ฐ์„  ์™ผ -> ์˜ค 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{0,1,0,0,0},
    				{0,0,1,0,0},
    				{0,0,0,1,0},
    				{0,0,1,0,1},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    	
    	@Test
    	void seroTwo() { // 2๋น™๊ณ  : ์„ธ๋กœ ๋‘ ์ค„   
    		int[][] bingo = {
    				{1,1,0,0,1},
    				{1,1,0,0,0},
    				{1,1,0,0,0},
    				{1,1,0,0,1},
    				{1,1,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void garoOne() { // 1๋น™๊ณ  : ๊ฐ€๋กœ ํ•œ ์ค„ 
    		int[][] bingo = {
    				{1,1,1,1,1},
    				{0,0,0,0,0},
    				{0,0,0,1,0},
    				{0,0,0,0,0},
    				{0,0,1,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    	
    	@Test
    	void garoTwo() { // 2๋น™๊ณ  : ๊ฐ€๋กœ ๋‘ ์ค„  
    		int[][] bingo = {
    				{1,1,1,1,1},
    				{0,0,0,0,1},
    				{0,0,0,0,0},
    				{1,1,1,1,1},
    				{0,1,0,0,0},
    		};
    		assertTrue(bingoCnt(bingo) == 2);
    	}
    	
    	@Test
    	void seroOne() { // 1๋น™๊ณ  : ์„ธ๋กœ ํ•œ ์ค„ 
    		int[][] bingo = {
    				{1,0,0,0,0},
    				{1,0,0,1,0},
    				{1,0,1,0,0},
    				{1,0,0,0,0},
    				{1,0,0,1,0},
    		};
    		assertTrue(bingoCnt(bingo) == 1);
    	}
    
    
    }

2์ฃผ์ฐจ

2์ฃผ์ฐจ์—๋Š” ๊ตฌํ˜„ํ•˜๋ผ๋Š” ๊ณผ์ œ ๋‚ด์ฃผ์…จ๋Š”๋ฐ ์ด ๊ณผ์ •์—์„œ ์„ค๊ณ„, ๊ทธ๋ฆฌ๊ธฐ์˜ ์ค‘์š”์„ฑ ํ•œ ๋ฒˆ ๋” ๊นจ๋‹ฌ์Œ..!

ํ™•์‹คํžˆ ํ•œ๊ธ€๋กœ ์Šคํ…๋ณ„๋กœ๋กœ ๋‹ค ์ ๊ณ  ๊ตฌํ˜„ํ•˜๋‹ˆ๊นŒ ์‹ค์ˆ˜๋„ ์ ์—ˆ๋‹ค.

์ฒซ ์‹œ๋„ ๋•Œ ๊ทธ๋ฆผ ์•ˆ ๊ทธ๋ฆฌ๊ณ  ๋จธ๋ฆฌ์† ์ƒ๊ฐ๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ฐ€ ํ˜ผ๋‚ฌ๋Š”๋ฐ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ณ  ๊ตฌ์กฐ ์žก๊ณ  ๊ตฌํ˜„ํ•˜๋‹ˆ ์ฝ”๋“œ ๋งŽ์ด ๊น”๋”ํ•ด์กŒ๋‹ค๊ณ  ์นญ์ฐฌํ•ด์ฃผ์…จ๋‹ค๐Ÿฅน

12์ผ์ฐจ

TDD

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋ง‰์—ฐํ•˜๊ณ  ์–ด๋ ต๊ฒŒ ๋А๊ปด์ ธ์„œ ์‹œ๋„ํ•  ์ƒ๊ฐ์กฐ์ฐจ ์•ˆ ํ–ˆ์—ˆ๋Š”๋ฐ(์šฐ๋ฆฌ ํšŒ์‚ฌ์—์„œ๋Š” ์“ฐ์ง€๋„ ์•Š๊ณ  ์–ธ์  ๊ฐ„ ๋ฐฐ์šฐ๊ฒ ์ง€ ๋จธ.. ํ•˜๊ณ  ๋ฌด์ž‘์ • ๋ฏธ๋ฃธ ใ…Žใ…Žโ€ฆ) mid๋ž‘ ๋น™๊ณ  ๋ฌธ์ œ ํ’€๋ฉด์„œ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ์ด๋ ‡๊ฒŒ ํŽธํ•˜๊ณ  ์ข‹์€ ๊ฑด์ค„ ๋ชฐ๋ž๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ€ ๋งž๋Š”์ง€ ์ง์ ‘ ํ™•์ธ์„ ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋Œ๋ฆฌ๋‹ˆ ํŒŒ๋ž€๋ถˆ์ธ์ง€ ๋นจ๊ฐ„๋ถˆ์ธ์ง€๋งŒ ๋ณด๋ฉด๋˜๋‹ˆ๊นŒ ์™„์ „ ํŽธํ–ˆ๋‹ค. ์ง์ ‘ ์ ์šฉํ•ด๋ณด๊ณ  ์จ๋ณด๋‹ˆ๊นŒ ์™€๋‹ฟ๋Š”๋‹ค.

๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด๋ณด๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๋งŽ์ด ํ•ด๋ด์•ผ ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํšจ์œจ์ ์ธ ํ•„์š” ์—†๊ณ  ๊ผผ๊ผผํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋น„ํšจ์œจ์ ์ด์–ด๋„ ๊ผผ๊ผผํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์„ ์ƒ๋‹˜๊ป˜์„œ ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์ฑ… ํ•œ ๊ถŒ์„ ์ฝ์–ด๋ด์•ผ ํ•œ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋Š”๋ฐ, ์ง€๊ธˆ์€ ์ฝ์„ ์—ฌ์œ ๊ฐ€ ์—†๊ณ โ€ฆ.,,, ์—ฌ๊ธฐ๋‹ค ์ ์–ด๋‘์—ˆ์œผ๋‹ˆ๊นŒ ์–ธ์  ๊ฐ€ ์ฝ๊ฒ ์ง€ ํ•˜ํ•˜

์“ฐ๋Š” ๋ชฉ์  : ํ…Œ์ŠคํŠธ ์ž๋™ํ™”, ๋ฆฌํŒฉํ† ๋ง(์ฝ”๋“œ๋ฅผ ๊ณ ์ณค์„ ๋•Œ ์•ˆ์‹ฌํ•˜๊ณ  ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค. ๋ญ˜ ๋ณ€๊ฒฝํ•˜๋“  ๋ฏธ์น˜๋Š” ์˜ํ–ฅ ํŒŒ์•… ๊ฐ€๋Šฅ)

์ž๋ฃŒ๊ตฌ์กฐ

Vector ํด๋ž˜์Šค ๊ตฌํ˜„

List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ Vector ํด๋ž˜์Šค๋ฅผ ๋‚ด๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•ด๋ณด๋‹ˆ ์ถ”์ƒํ™” ๊ฐœ๋…์ด ์ข€ ๋” ์™€๋‹ฟ์•˜๋‹ค.

์•„๋ฌด ์ƒ๊ฐ์—†์ด ์„ ์–ธ๋ถ€๋งŒ ์•Œ๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์“ฐ๋˜ ๋ฉ”์„œ๋“œ๋“ค์„ ๋‚ด๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋‹ˆ ๊ทธ๋ƒฅ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋”ฑ ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ใ…‹ใ…‹ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์—ˆ๊ณ  ๋™์ž‘์„ ํ•˜๋Š”๊ตฌ๋‚˜ ํ•˜๊ณ  ์•Œ๊ฒŒ๋˜๋‹ˆ ์‹ ๊ธฐํ–ˆ๋‹ค.

์ด๋ž˜์„œ ์ถ”์ƒํ™”๋ฅผํ•˜๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์“ฐ๋Š” ๊ฑฐ๊ตฌ๋‚˜ํ•˜๊ณ  ์™€๋‹ฟ์Œ

์ €๋ฒˆ ์ฃผ์— ํ–ˆ๋˜ MyVector ๊ตฌํ˜„์„ ์ด๋ฒˆ ์ฃผ ๊ณผ์ œ๋กœ ๋‚ด์ฃผ์…”์„œ ํ•œ ๋ฒˆ๋” ํ•ด๋ดค๋‹ค. ์ €๋ฒˆ ์ฃผ์™€ ๊ฐ™์ด ๋ณด๊ณ  ๋”ฐ๋ผ์น˜๊ธฐ๋งŒ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณด๊ณ  ๋‚ด๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฑฐ๋ผ ๋” ๊ธฐ์–ต์— ์ž˜ ๋‚จ๊ณ  ์ดํ•ด๋„๋„ ๋‹ฌ๋ž๋‹ค.

๊ทธ๋ƒฅ ์š”๊ตฌ์‚ฌํ•ญ๋งŒ ๋ดค์„ ๋•Œ๋Š” ๊ฐ„๋‹จํ•ด๋ณด์˜€๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ณ ๋ คํ•  ์š”์†Œ๋“ค์ด ๋งŽ์•˜๋‹ค. null๊ฐ’์ด ๋“ค์–ด์˜จ๋‹ค๋˜์ง€ remove ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œ ํ•  ๋•Œ๋Š” ๋ฐฐ์—ด ๋ณต์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋˜์ง€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ฐฐ์—ด์˜ capacity๊ฐ€ ๋‹ค ์ฐผ๋Š”์ง€ ํ•ญ์ƒ ์ฒดํฌํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์„œ ๋ณต์‚ฌํ•ด ๋ฐ˜ํ™˜ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ, ๋ฐฐ์—ด ๋ณต์‚ฌํ•  ๋•Œ๋Š” for๋ฌธ์ด ์•„๋‹ˆ๋ผ System.arraycopy(์†๋„๊ฐ€ ๋” ๋น ๋ฆ„)๋ฅผ ์จ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ ๋“ฑ๋“ฑ..

๋ฐฐ์—ด์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋” ์ž˜ ์ดํ•ดํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๊ณ  ์žฌ๋ฐŒ์—ˆ๋‹ค. 16์žฅ๊นŒ์ง€ ๋๋‚ด๋ฉด linkedList๋ž‘ HashMap, TreeSet๋„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ!

  • MyVector
    package ch12;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class MyVector {
        private Object[] objArr;
        private static final int DEFAULT_CAPACITY = 16;
        private int capacity; // ์šฉ๋Ÿ‰
        private int size;     // ๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜
    
        MyVector() {
            this(DEFAULT_CAPACITY);
        }
    
        MyVector(int capacity) {
            this.capacity = capacity;
            objArr = new Object[capacity];
        }
    
        // ๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
        public int size() {
            return size;
        }
    
        public int capacity() {
            return capacity;
        }
    
        // ๊ฐ์ฒด ๋ฐฐ์—ด์ด ๋น„์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค
        public boolean isEmpty() {
            return capacity < 1;
        }
    
        /**
         * ๊ธฐ๋Šฅ : ๊ฐ์ฒด๋ฐฐ์—ด objArr์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ
         * ๋ฉ”์„œ๋“œ๋ช… : add
         * ๋ฐ˜ํ™˜ํƒ€์ž… : void
         * ๋งค๊ฐœ๋ณ€์ˆ˜ : Object obj
         */
        public void add(Object obj) {
            // objArr ์šฉ๋Ÿ‰์ด ๋‹ค ์ฐจ์ง€ ์•Š์•˜์„ ๋•Œ๋งŒ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
            if (objArr.length == size) {
                objArr = grow(); // // ์šฉ๋Ÿ‰์„ ๋Š˜๋ฆฐ๋‹ค.(+16)
            }
            objArr[size++] = obj;
        }
    
        /**
         * ๊ธฐ๋Šฅ : ๋ฐฐ์—ด์ด ๋‹ค ์ฐผ์„ ๊ฒฝ์šฐ DEFAULT_CAPACIT Y(16)๋งŒํผ ๊ธธ์ด๋ฅผ ๋Š˜๋ฆฐ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
         * ๋ฉ”์„œ๋“œ๋ช… : grow()
         * ๋ฐ˜ํ™˜ํƒ€์ž… : Object[]
         * ๋งค๊ฐœ๋ณ€์ˆ˜ : ์—†์Œ
         */
        public Object[] grow() {
            /**
             * 1. ํ˜„์žฌ ๋ฐฐ์—ด์˜ capacity๋ณด๋‹ค + DEFAULT_CAPACITY(16)ํ•œ Object ๋ฐฐ์—ด tmp๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
             * 2. objArr์˜ ๋‚ด์šฉ์„ tmp์— ๋ณต์‚ฌํ•œ๋‹ค.
             * 3. tmp์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
             */
            capacity = size + DEFAULT_CAPACITY;
            Object[] tmp = new Object[capacity];
            System.arraycopy(objArr, 0, tmp, 0, size);
    
            return tmp;
        }
    
        /**
         * ๊ฐ์ฒด๋ฐฐ์—ด objArr์— ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Object get(index)๋ฅผ ์ž‘์„ฑ
         */
        public Object get(int index) {
            // index๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค.
            // index๊ฐ€ 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ size๋ž‘ ๊ฐ™๊ฑฐ๋‚˜ ํด ๊ฒฝ์šฐ
            // 0 <= index < size
    
            if (!(0 <= index && index < size))
                throw new IndexOutOfBoundsException("์œ ํšจํ•œ ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.");
    
            return objArr[index];
        }
    
        /**
         * ๊ธฐ๋Šฅ : ๊ฐ์ฒด ๋ฐฐ์—ด objArr์—์„œ ์ง€์ •๋œ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์œ„์น˜(index)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” int indexOf(Object obj)๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.
         * ex) "๊ฐ€", "๋‚˜", "๋‹ค"๋ฅผ ์ž…๋ ฅํ–ˆ์œผ๋ฉด "๋‚˜"๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๊ฒฝ์šฐ 1์„ ๋ฐ˜ํ™˜ํ•ด์ค˜์•ผํ•จ
         * ๋ฉ”์„œ๋“œ๋ช… : indexOf
         * ๋งค๊ฐœ๋ณ€์ˆ˜ : Object obj
         * ๋ฐ˜ํ™˜ํƒ€์ž… : int
         */
        public int indexOf(Object obj) {
            /**
             * ๊ฐ์ฒด ๋ฐฐ์—ด objArr์—์„œ obj๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
             * objArr ๊ธธ์ด๋งŒํผ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ objArr[i]์™€ obj๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•จ
             */
            for (int i = 0; i < size; i++) {
                if (obj == null) {
                    if (objArr[i] == null) return i;
                } else {
                    if (obj.equals(objArr[i])) return i; // objArr[i]์˜ equals๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฑฐ์ž„ ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ฐ’์ด ์ •์ˆ˜๋ฉด Integer.equals
                }
            }
            return -1;
        }
        
        /**
         * ๊ธฐ๋Šฅ : ๊ฐ์ฒด๋ฐฐ์—ด objArr์—์„œ ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” boolean remove(Object obj)๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.(indexOf()๋ฅผ ์ด์šฉํ•  ๊ฒƒ)
         *       +) ๋งŒ์•ฝ ์‚ญ์ œํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€
         * ๋ฉ”์„œ๋“œ๋ช… : remove
         * ๋งค๊ฐœ๋ณ€์ˆ˜ : Object obj
         * ๋ฐ˜ํ™˜ํƒ€์ž… : boolean
         */
        public Object remove(Object obj) {
            int idx = indexOf(obj);
            if (idx != size - 1) {
                System.arraycopy(objArr, idx + 1, objArr, idx, size - idx - 1);
            }
            objArr[size - 1] = null; // ๋งŒ์•ฝ์— size๊ฐ€ 5์—์„œ 4๋กœ ๋ณ€๊ฒฝ์ด ๋˜์—ˆ๋Š”๋ฐ,,
            size--;
    
            return objArr[idx];
        }
    
    
        @Override
        public String toString() {
            return "objArr=" + Arrays.toString(objArr) +
                    ", capacity=" + capacity +
                    ", size=" + size;
        }
    
        public static void main(String[] args) {
            ArrayList test2 = new ArrayList();
            test2.add(null);
            test2.add(3);
    
            System.out.println("test2.indexOf(3) = " + test2.indexOf(3));
    
            MyVector test = new MyVector(1);
            test.add(null);
            test.add(3);
            System.out.println("test.indexOf(3) = " + test.indexOf(3));
            System.out.println("test.indexOf(null) = " + test.indexOf(null));
        }
    
    }

๋งˆ์ธ๋“œ์…‹

  • ํƒ€์ธ์˜ ์‹œ์„ ์— ๊ฐ‡ํžˆ์ง€ ๋ง ๊ฒƒ. ๋ณธ์ธ ์Šค์Šค๋กœ ํ•œ๊ณ„๋ฅผ ๊ทœ์ •์ง“์ง€ ๋ง๊ธฐ
  • ์˜ํ–ฅ๋ ฅ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‚ด ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๊ธฐ๋ณด๋‹ค๋Š” ๋‚จ๋“ค์„ ๋„์™€์ค˜์•ผ ํ•œ๋‹ค.

6๊ฐœ์›” ๋™์•ˆ ๋ฐฐ์šฐ๋ฉด์„œ ์–ป์–ด๊ฐ€์•ผ ํ•  ๊ฒƒ / ํ•™์Šต

  • ๋‚˜๋งŒ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์Šค๋กœ ๊ฐ–์ถ”๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋”๋ผ๋„ ์ถฉ๋ถ„ํžˆ ์‹œ๊ฐ„์„ ๊ฐ–๊ณ  ๋‚˜๋งŒ์˜ ๋‹ต์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
  • ์ž์‹ ์˜ ์ƒ๊ฐ์„ ์˜๋…ผ, ํ† ์˜ํ•˜๋Š” ์Šต๊ด€ โ†’ ์‹ค๋ฌด์—์„œ ํ•„์ˆ˜์ ์ธ ๋Šฅ๋ ฅ
  • ๋””ํ…Œ์ผ์— ์ง‘์ฐฉํ•˜์ง€ ๋ง๊ณ  ํ•ต์‹ฌ๋งŒ ๊ธฐ์–ตํ•˜๊ธฐ

    ๊ฐœ๋…์„ ์ถ”์ƒํ™”ํ•ด์„œ ๊ธฐ์–ตํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ ํ•œ๋‹ค. ๊ณตํ†ต ํ•ต์‹ฌ ๋ถ€๋ถ„๋งŒ ์••์ถ•ํ•ด์„œ ์™ธ์šฐ๊ณ  ๋””ํ…Œ์ผ์€ ์ดํ•ดํ•˜๊ณ  ๋ฒ„๋ ค์—ฌํ•จ

  • ์ข‹์€ ์ฑ…์„ ๊ฐ€๊นŒ์ดํ•ด์•ผ ํ•œ๋‹ค.

    ์˜์ƒ์€ ์ง€์น˜๊ณ  ๊ฒ€์ƒ‰์— ์˜์กดํ•˜๊ฒŒ๋œ๋‹ค. ์˜จ๋ผ์ธ ๊ฐ•์ขŒ ๋ช‡ ๊ฐœ ๋ดค๋‹ค๊ณ  ์ข‹์€ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ๊ฑฐ ์•„๋‹˜. ์ด๋ถ๋ณด๋‹ค๋Š” ์ข…์ด์ฑ… ๋ณผ ๊ฒƒ. 2D๋Š” 3D๋ฅผ ์ด๊ธฐ์ง€ ๋ชปํ•œ๋‹ค.

  • ๊ธฐ์ˆ ์— ์ข…์†๋  ํ•„์š” X

    ์ž๋ฐ”๋ฅผ ํ†ตํ•ด์„œ OOP๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ ์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒŒ ์•„๋‹˜ ใ„ดใ„ด ์ž๋ฐ”๋ฅผ ํ†ตํ•ด์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ

  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

    ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ณด๋Š” ๊ฒƒ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด ์ถ”์ธกํ•˜์ง€ ๋ง๊ณ  ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ผญ ์ฝ์–ด๋ณผ ๊ฒƒ

  • ์ฃผ์„

    ์ฃผ์„์€ ํ•„์š”ํ•  ๋•Œ ์ ์ ˆํžˆ ์ ์œผ๋ฉด ๋˜์ง€๋งŒ ์ง€๊ธˆ ๋ฐฐ์šฐ๋Š” ๋‹จ๊ณ„์—์„œ๋Š” ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์ ์–ด์•ผ๋จ

    ์ƒ๊ฐ์ •๋ฆฌ = ์ฃผ์„, ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งฅ๋ฝ

  • CS ์šฐ์„ ์ˆœ์œ„

    CS ์ง€์‹ ๋ถ€์กฑํ•œ๊ฒŒ ์ปดํ”Œ๋ ‰์Šค์˜€๋Š”๋ฐ,, ๋‚˜ํ•œํ…Œ ์ •๋ง ํ•„์š”ํ–ˆ๋˜ ๊ณต๋ถ€ ์šฐ์„ ์ˆœ์œ„์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์…จ๋‹ค.

    1. ์ž๋ฃŒ๊ตฌ์กฐ : ํˆฌ์ž ๋Œ€๋น„ ์•„์›ƒํ’‹์ด ์ œ์ผ ์ข‹๊ณ  ์šฐ์„ ์ˆœ์œ„ ๋†’์Œ. ๊พธ์ค€ํžˆ ํ‹ˆํ‹ˆํžˆ ๋ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”์˜ ์ •์„ 11์žฅ์ด ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ธฐ์ดˆ๊ฐ€๋จ
    1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    1. ๋„คํŠธ์›Œํฌ
    1. ์šด์˜์ฒด์ œ : ์ƒ์‹ ์ˆ˜์ค€์œผ๋กœ๋งŒ ๋ณด๋ฉด๋˜๊ณ  ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ๋ณด๋ฉด ์•ˆ๋จ, ์žฅ๊ธฐ์ ์œผ๋กœ ์กฐ๊ธˆ์”ฉ ๋ณด๊ธฐ

์ž๋ฃŒ๊ตฌ์กฐ

์ด๋‹ฌ์— ํ•™์Šตํ•œ ๋‚ด์šฉ

์ƒ์‚ฐ์„ฑ

Vim

๋‚ด๊ฐ€ ๊ทนํ•œ์˜ ํšจ์œจ์„ ์ถ”๊ตฌํ•˜๋Š” ์‚ฌ๋žŒ์ธ ๊ฑธ ์–ด๋–ป๊ฒŒ ์•„์‹œ๊ณ  ์„ ์ƒ๋‹˜๊ป˜์„œ vim ์จ๋ณด๋ฉด ์ข‹์•„ํ•  ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค ใ…‹ใ…‹ vim์˜ ์กด์žฌ๋Š” ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ๋”ฑํžˆ ์จ๋ณผ ์ƒ๊ฐ์€ ๋“ค์ง€ ์•Š์•˜์—ˆ๋Š”๋ฐ ์จ๋ณด๋‹ˆ ์™„์ „ ์‹ ์„ธ๊ณ„์ž„..!

  1. ํ‚ค ์กฐํ•ฉํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
  1. ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ํ‚ค๋ณด๋“œ ์œ„ ์•„๋ž˜ ์ด๋™ ํ‚ค์ž‘์•„์„œ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆํŽธํ–ˆ์—ˆ๋Š”๋ฐ hjkl๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋„ˆ๋ฌด ์ข‹๋‹ค
  1. ์†์ด ๋งˆ์šฐ์Šค๋กœ ๊ฐ€์ง€ ์•Š์•„์„œ ํ๋ฆ„์ด ๋Š๊ธฐ์ง€ ์•Š์Œ

์ง€๊ธˆ์€ ์ ์‘ ๋‹จ๊ณ„๋ผ ๋š๋”ฑ๋Œ€์ง€๋งŒ ์ต์ˆ™ํ•ด์ง€๋ฉด ์ƒ์‚ฐ์„ฑ ์žฅ๋‚œ ์•„๋‹ ๊ฒƒ ๊ฐ™๋‹ค


Uploaded by N2T