ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2018 KAKAO BLIND RECRUITMENT] [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง - level2
    ๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜ 2022. 12. 6. 17:16
    728x90

    ๐Ÿ“๋ฌธ์ œ ์„ค๋ช… 

    ์—ฌ๋Ÿฌ ์–ธ๋ก ์‚ฌ์—์„œ ์Ÿ์•„์ง€๋Š” ๋‰ด์Šค, ํŠนํžˆ ์†๋ณด์„ฑ ๋‰ด์Šค๋ฅผ ๋ณด๋ฉด ๋น„์Šท๋น„์Šทํ•œ ์ œ๋ชฉ์˜ ๊ธฐ์‚ฌ๊ฐ€ ๋งŽ์•„ ์ •์ž‘ ํ•„์š”ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. Daum ๋‰ด์Šค์˜ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋œ ์‹ ์ž…์‚ฌ์› ํŠœ๋ธŒ๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค์–‘ํ•œ ๋‰ด์Šค๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ฌธ์ œ์ ์„ ๊ฐœ์„ ํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค.

    ๊ฐœ๋ฐœ์˜ ๋ฐฉํ–ฅ์„ ์žก๊ธฐ ์œ„ํ•ด ํŠœ๋ธŒ๋Š” ์šฐ์„  ์ตœ๊ทผ ํ™”์ œ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š” "์นด์นด์˜ค ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ณต์ฑ„" ๊ด€๋ จ ๊ธฐ์‚ฌ๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋ณด์•˜๋‹ค.

    • ์นด์นด์˜ค ์ฒซ ๊ณต์ฑ„..'๋ธ”๋ผ์ธ๋“œ' ๋ฐฉ์‹ ์ฑ„์šฉ
    • ์นด์นด์˜ค, ํ•ฉ๋ณ‘ ํ›„ ์ฒซ ๊ณต์ฑ„.. ๋ธ”๋ผ์ธ๋“œ ์ „ํ˜•์œผ๋กœ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ
    • ์นด์นด์˜ค, ๋ธ”๋ผ์ธ๋“œ ์ „ํ˜•์œผ๋กœ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ณต์ฑ„
    • ์นด์นด์˜ค ๊ณต์ฑ„, ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ฝ”๋”ฉ ๋Šฅ๋ ฅ๋งŒ ๋ณธ๋‹ค
    • ์นด์นด์˜ค, ์‹ ์ž… ๊ณต์ฑ„.. "์ฝ”๋”ฉ ์‹ค๋ ฅ๋งŒ ๋ณธ๋‹ค"
    • ์นด์นด์˜ค "์ฝ”๋”ฉ ๋Šฅ๋ ฅ๋งŒ์œผ๋กœ 2018 ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋ฝ‘๋Š”๋‹ค"

    ๊ธฐ์‚ฌ์˜ ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ "๋ธ”๋ผ์ธ๋“œ ์ „ํ˜•"์— ์ฃผ๋ชฉํ•˜๋Š” ๊ธฐ์‚ฌ์™€ "์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ"์— ์ฃผ๋ชฉํ•˜๋Š” ๊ธฐ์‚ฌ๋กœ ๋‚˜๋‰˜๋Š” ๊ฑธ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ํŠœ๋ธŒ๋Š” ์ด๋“ค์„ ๊ฐ๊ฐ ๋ฌถ์–ด์„œ ๋ณด์—ฌ์ฃผ๋ฉด ์นด์นด์˜ค ๊ณต์ฑ„ ๊ด€๋ จ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ์•„๋ณด๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์šฉํ•  ๋“ฏ์‹ถ์—ˆ๋‹ค.

    ์œ ์‚ฌํ•œ ๊ธฐ์‚ฌ๋ฅผ ๋ฌถ๋Š” ๊ธฐ์ค€์„ ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋…ผ๋ฌธ๊ณผ ์ž๋ฃŒ๋ฅผ ์กฐ์‚ฌํ•˜๋˜ ํŠœ๋ธŒ๋Š” "์ž์นด๋“œ ์œ ์‚ฌ๋„"๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ƒˆ๋‹ค.

    ์ž์นด๋“œ ์œ ์‚ฌ๋„๋Š” ์ง‘ํ•ฉ ๊ฐ„์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘์˜ ํ•˜๋‚˜๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๋‘ ์ง‘ํ•ฉ A, B ์‚ฌ์ด์˜ ์ž์นด๋“œ ์œ ์‚ฌ๋„ J(A, B)๋Š” ๋‘ ์ง‘ํ•ฉ์˜ ๊ต์ง‘ํ•ฉ ํฌ๊ธฐ๋ฅผ ๋‘ ์ง‘ํ•ฉ์˜ ํ•ฉ์ง‘ํ•ฉ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์œผ๋กœ ์ •์˜๋œ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ์ง‘ํ•ฉ A = {1, 2, 3}, ์ง‘ํ•ฉ B = {2, 3, 4}๋ผ๊ณ  ํ•  ๋•Œ, ๊ต์ง‘ํ•ฉ A ∩ B = {2, 3}, ํ•ฉ์ง‘ํ•ฉ A ∪ B = {1, 2, 3, 4}์ด ๋˜๋ฏ€๋กœ, ์ง‘ํ•ฉ A, B ์‚ฌ์ด์˜ ์ž์นด๋“œ ์œ ์‚ฌ๋„ J(A, B) = 2/4 = 0.5๊ฐ€ ๋œ๋‹ค. ์ง‘ํ•ฉ A์™€ ์ง‘ํ•ฉ B๊ฐ€ ๋ชจ๋‘ ๊ณต์ง‘ํ•ฉ์ผ ๊ฒฝ์šฐ์—๋Š” ๋‚˜๋ˆ—์…ˆ์ด ์ •์˜๋˜์ง€ ์•Š์œผ๋‹ˆ ๋”ฐ๋กœ J(A, B) = 1๋กœ ์ •์˜ํ•œ๋‹ค.

    ์ž์นด๋“œ ์œ ์‚ฌ๋„๋Š” ์›์†Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋Š” ๋‹ค์ค‘์ง‘ํ•ฉ์— ๋Œ€ํ•ด์„œ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์ค‘์ง‘ํ•ฉ A๋Š” ์›์†Œ "1"์„ 3๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋‹ค์ค‘์ง‘ํ•ฉ B๋Š” ์›์†Œ "1"์„ 5๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด ๋‹ค์ค‘์ง‘ํ•ฉ์˜ ๊ต์ง‘ํ•ฉ A ∩ B๋Š” ์›์†Œ "1"์„ min(3, 5)์ธ 3๊ฐœ, ํ•ฉ์ง‘ํ•ฉ A ∪ B๋Š” ์›์†Œ "1"์„ max(3, 5)์ธ 5๊ฐœ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๋‹ค์ค‘์ง‘ํ•ฉ A = {1, 1, 2, 2, 3}, ๋‹ค์ค‘์ง‘ํ•ฉ B = {1, 2, 2, 4, 5}๋ผ๊ณ  ํ•˜๋ฉด, ๊ต์ง‘ํ•ฉ A ∩ B = {1, 2, 2}, ํ•ฉ์ง‘ํ•ฉ A ∪ B = {1, 1, 2, 2, 3, 4, 5}๊ฐ€ ๋˜๋ฏ€๋กœ, ์ž์นด๋“œ ์œ ์‚ฌ๋„ J(A, B) = 3/7, ์•ฝ 0.42๊ฐ€ ๋œ๋‹ค.

    ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์‚ฌ์ด์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ž์—ด "FRANCE"์™€ "FRENCH"๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ๋‘ ๊ธ€์ž์”ฉ ๋Š์–ด์„œ ๋‹ค์ค‘์ง‘ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}๊ฐ€ ๋˜๋ฉฐ, ๊ต์ง‘ํ•ฉ์€ {FR, NC}, ํ•ฉ์ง‘ํ•ฉ์€ {FR, RA, AN, NC, CE, RE, EN, CH}๊ฐ€ ๋˜๋ฏ€๋กœ, ๋‘ ๋ฌธ์ž์—ด ์‚ฌ์ด์˜ ์ž์นด๋“œ ์œ ์‚ฌ๋„ J("FRANCE", "FRENCH") = 2/8 = 0.25๊ฐ€ ๋œ๋‹ค.

    ์ž…๋ ฅ ํ˜•์‹

    • ์ž…๋ ฅ์œผ๋กœ๋Š” str1๊ณผ str2์˜ ๋‘ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜จ๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ, 1,000 ์ดํ•˜์ด๋‹ค.
    • ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ ๋ฌธ์ž์—ด์€ ๋‘ ๊ธ€์ž์”ฉ ๋Š์–ด์„œ ๋‹ค์ค‘์ง‘ํ•ฉ์˜ ์›์†Œ๋กœ ๋งŒ๋“ ๋‹ค. ์ด๋•Œ ์˜๋ฌธ์ž๋กœ ๋œ ๊ธ€์ž ์Œ๋งŒ ์œ ํšจํ•˜๊ณ , ๊ธฐํƒ€ ๊ณต๋ฐฑ์ด๋‚˜ ์ˆซ์ž, ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๊ทธ ๊ธ€์ž ์Œ์„ ๋ฒ„๋ฆฐ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "ab+"๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด, "ab"๋งŒ ๋‹ค์ค‘์ง‘ํ•ฉ์˜ ์›์†Œ๋กœ ์‚ผ๊ณ , "b+"๋Š” ๋ฒ„๋ฆฐ๋‹ค.
    • ๋‹ค์ค‘์ง‘ํ•ฉ ์›์†Œ ์‚ฌ์ด๋ฅผ ๋น„๊ตํ•  ๋•Œ, ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž์˜ ์ฐจ์ด๋Š” ๋ฌด์‹œํ•œ๋‹ค. "AB"์™€ "Ab", "ab"๋Š” ๊ฐ™์€ ์›์†Œ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

    ์ถœ๋ ฅ ํ˜•์‹

    ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ ๋‘ ๋ฌธ์ž์—ด์˜ ์ž์นด๋“œ ์œ ์‚ฌ๋„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์œ ์‚ฌ๋„ ๊ฐ’์€ 0์—์„œ 1 ์‚ฌ์ด์˜ ์‹ค์ˆ˜์ด๋ฏ€๋กœ, ์ด๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๋„๋ก 65536์„ ๊ณฑํ•œ ํ›„์— ์†Œ์ˆ˜์  ์•„๋ž˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์ •์ˆ˜๋ถ€๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.

    ์˜ˆ์ œ ์ž…์ถœ๋ ฅ

    str1 str2 answer
    FRANCE french 16384
    handshake shake hands 65536
    aa1+aa2 AAAA12 43690
    E=M*C^2 e=m*c^2 65536

     

     ๐Ÿ”Ž ์ฒ˜์Œ ์ƒ๊ฐํ•œ ์•„์ด๋””์–ด  

    1. ์šฐ์„  ๋‹ค์ค‘ ์ง‘ํ•ฉ์„ ๋‘ ๊ธ€์ž์”ฉ ๋Š์–ด ArrayList์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์œ ํšจ ๋ฌธ์ž๋งŒ ์ •ํ™•ํžˆ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

    2. ๊ต์ง‘ํ•ฉ๊ณผ ํ•ฉ์ง‘ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.

    3. (๊ต์ง‘ํ•ฉ / ํ•ฉ์ง‘ํ•ฉ) * 65536์˜ ์ •์ˆ˜๋ถ€  ==  ์ž์นด๋“œ ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.

     

    ์›์†Œ๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— str1, str2๋ฅผ ๊ฐ๊ฐ ArrayList์— ์ €์žฅํ•ด์ฃผ๊ณ 

    ๊ทธ ๋‘ ๊ฐœ์˜ ArrayList๋ฅผ ๋น„๊ตํ•œ๋‹ค.

    1. arr2์— arr1์˜ ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ๋‹ค๋ฉด arr2์—์„œ ํ•ด๋‹น ์š”์†Œ ์‚ญ์ œํ•˜๋ฉฐ ๊ต์ง‘ํ•ฉ count +1. 

    2. 1๋ฒˆ ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด arr2์—๋Š” arr1๊ณผ ๊ฒน์น˜์ง€ ์•Š๋Š” ์š”์†Œ๋“ค์ด ๋‚จ๊ฑฐ๋‚˜,  ๋นˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

    3. ํ•ฉ์ง‘ํ•ฉ count = arr1์˜ ํฌ๊ธฐ + arr2์˜ ํฌ๊ธฐ๊ฐ€ ๋œ๋‹ค.

     

     โœ๏ธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ 

    import java.util.*;
    
    class Solution {
    
    	public int solution(String str1, String str2) {
        
    		int answer = 0;
            ArrayList<String> arrlist = new ArrayList<>();
            ArrayList<String> arrlist2 = new ArrayList<>();
            int intersection = 0; // ๊ต์ง‘ํ•ฉ์˜ ์ˆ˜
            int union = 0; //ํ•ฉ์ง‘ํ•ฉ์˜ ์ˆ˜
            
            // 1. ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ 
            str1 = str1.toUpperCase();
            str2 = str2.toUpperCase();
            
            // ์™„์ „ ๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋ฉด ์ž์นด๋“œ = 1
            if(str1.equals(str2)) {
            	return 65536;
            }
            
            
            // 2. str1 2๊ธ€์ž์”ฉ ๋ถ„๋ฆฌํ›„ arrlist ์ €์žฅ 
            for(int i =0;i<str1.length()-1;i++) {
            	
                String temp = str1.substring(i,i+2);
            	boolean flag = isAlphabet(temp);
    
            	if(flag) arrlist.add(temp);
            	
            }
            
            
            
    		// 3. str2 2๊ธ€์ž์”ฉ ๋ถ„๋ฆฌํ›„ arrlist2 ์ €์žฅ
            
            for(int i =0;i<str2.length()-1;i++) {
     
     			String temp = str2.substring(i,i+2);
            	boolean flag = isAlphabet(temp);
            	
            	if(flag) arrlist2.add(temp);
       	
            }
            
             // 4. ํ•ฉ์ง‘ํ•ฉ ๊ต์ง‘ํ•ฉ ๊ฒ€์‚ฌ
            // ํ•ฉ์ง‘ํ•ฉ : A+B - (A์™€ B์˜ ๊ต์ง‘ํ•ฉ)
            // ๊ต์ง‘ํ•ฉ : A B ๋‘˜๋‹ค ์ค‘๋ณต๋˜๋Š” ๊ฐ’ count       
            for(int i=0;i<arrlist.size();i++) {
            	
            	if(arrlist2.remove(arrlist.get(i))) {
            		intersection++;
            	}
            	
            }
            
            union = arrlist2.size() + arrlist.size();
            
            answer = 65536*intersection / union;
            
            return answer;
        }
    	
    	// ์œ ํšจ๋ฌธ์ž์—ด์ธ์ง€ ๊ฒ€์‚ฌ
    	boolean isAlphabet(String temp) {
    		
    		boolean flag = false;
    		
    		for(int j =0;j<temp.length();j++) {
        		
        		if(temp.charAt(j)>='A' && temp.charAt(j)<='Z') {
        			flag= true;
        		}
        		else {
        			flag= false;
        			break;
        		};
        		
        	}
    		
    		return flag;
    	}
        
    }
    
    /*
     ์ฑ„์ ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    ์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
    ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.04ms, 77.4MB)
    ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.06ms, 76.9MB)
    ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.07ms, 71.6MB)
    ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (1.41ms, 74.9MB)
    ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.05ms, 66MB)
    ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.04ms, 74MB)
    ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.26ms, 73MB)
    ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.05ms, 76.1MB)
    ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.18ms, 80.9MB)
    ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.65ms, 76MB)
    ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.79ms, 74.1MB)
    ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.05ms, 75.7MB)
    ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.18ms, 75.1MB)
    ์ฑ„์  ๊ฒฐ๊ณผ
    ์ •ํ™•์„ฑ: 100.0
    ํ•ฉ๊ณ„: 100.0 / 100.0
     */

     

     ๐Ÿ– ์•Œ๊ฒŒ ๋œ ์  

    list.remove() ์—ฐ์‚ฐ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ boolean์ด์—ˆ๊ตฌ๋‚˜..!

    ํฌ๋กค๋งํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์œ ์šฉํ•œ ์ž์นด๋“œ ์œ ์‚ฌ๋„!

     

     

    ์ž์นด๋“œ ์œ ์‚ฌ๋„

     

     

     

     

    ๋Œ“๊ธ€

Designed by Tistory.