11주차 알고리즘

이동규·2023년 6월 20일

코테

목록 보기
2/22

class Solution {
    public int solution(String s) {
        // 문제 풀시 제한사항을 잘꼼꼼히 보자
        int count=0;
        int other= 0;
        int result =0;
        char temp='1';
        for (char c : s.toCharArray()) {// String을 char 배열로 쪼갠다.
            if (temp == '1') {//temp가 초기값 일 때 
                temp = c;//temp에 c를 저장
                count =1;//
                other = 0;//
                ++result;//
              
            }
            else if(temp == c){// 글자가 같은면 count 증가
                ++count;
                


            }
            else{
                ++other;
            }

            if (count == other) {
                
                temp = '1';// 동일문자카운트와 다른 문자 카운트가 동일하면 temop 초기화
            }

            }
function solution(s=String) {
    let answer = 0;
    let count =0;
    let other = 0;
    let temp = '1';
    s.split("").forEach(element => {
        if (temp === '1') {
            temp = element;
            ++count
            ++answer;

        }
        else if(temp === element){
            ++count;
            if (count === other) {
                temp = '1';
            }
        }
        else{
            ++other;
            if (count === other) {
                temp = '1';
            }
        }
    
        
        
    });
    return answer;
}

class Solution {
    public String solution(String[] survey, int[] choices) {
        char [][] type = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}};
        StringBuffer result = new StringBuffer();
        HashMap <Character,Integer> map = new HashMap<>();//각타입에 관한 총 점수를 map객체로 표현 
        for (char[] cs : type) {
            map.put(cs[0], 0);
            map.put(cs[1], 0);
        }
        int i=0;
        for (String s : survey) {
               if (choices[i] - 4 <0) {// 음수일 경우
                map.put(s.charAt(0),map.get(s.charAt(0))+ (-1 *(choices[i]-4)));
               }
               else if(choices[i] - 4>0){//양수일 경우
                    map.put(s.charAt(1),map.get(s.charAt(1))+(choices[i]-4));
               }
               else{// 같을경우

               }
               ++i;
        }
        for (char[] cs : type) {//지표 번호 끼리 점수 비교
            if (map.get(cs[0])> map.get(cs[1])) {
                result.append(cs[0]);
                
            }
            else if(map.get(cs[0])< map.get(cs[1])){
                result.append(cs[1]);

            }
            else{
                char temp = cs[0]> cs[1]?cs[1] :cs[0];
                result.append(temp);
            }
        }
      
        return result.toString();//String bulider를 string으로 변환
    }
}
function solution2(survey=[], choices=[]) { //survey ,choices
    let answer = "";// answer
    let table = [["R","T"],["C","F"],["J","M"],["A","N"]];// 유형 별 테이블표
    let obj ={};
    table.forEach(element => {
        obj[element[0]] =0;
        obj[element[1]]=0;
        
    });
    
    
    survey.forEach((element ,index)=> {
        if (choices[index]-4>0) {
             let temp = obj[element.charAt(1)];
             temp +=choices[index]-4;
             obj[element.charAt(1)] =temp;
             
            
        }
        else if(choices[index]-4<0){
            let temp = obj[element.charAt(0)];
             temp += -1*(choices[index]-4);
             obj[element.charAt(0)] =temp;
             
        }

       
       
    });

    table.forEach(element => {
        if (obj[element[0]]>obj[element[1]]) {
               answer+=element[0];
        }
        else if(obj[element[0]]<obj[element[1]]){
            answer+=element[1];
        }
        else{
            if (element[0]> element[1]) {
                answer += element[1];
            }
            else{
                answer += element[0];
            }
        }
        
    });


   

    return answer;
}

class Solution3 {
    public ArrayList<String> solution(int n, int[] arr1, int[] arr2) {
        ArrayList <String> answer = new ArrayList<>();
        String [][] table = new String[n][n];// n * n 행렬을 만든다.
        
        for (int i = 0; i < table.length; i++) {
            Arrays.fill(table[i], " ");// 공백으로 초기화
        }
        
        for (int i = 0; i < table.length; i++) {
            for (int j = table[i].length-1; j > -1; j--) {// 가장마지막 인덱스부터 0까지 차례대로 
               
                    if(arr1[i]%2 == 1){// 나머지가 1이 남으면 #을 저장한다.
                        table[i][j] = "#";
                    } 
                    arr1[i] /= 2;// 2로 나눈다.
                
            }
            
        }
        for (int i = 0; i < table.length; i++) {

            for (int j = table[i].length-1; j > -1; j--) {
               
                    if(arr2[i]%2 == 1){// 위와 동문이지만 문자열이 아닐때만 #을 저장한다.
                        if(table[i][j] == " ")
                            table[i][j] = "#";
                    } 
                    arr2[i] /= 2;// 2로 나눈다.
                
            }
            answer.add(String.join("", table[i]));
            // 문자열 배열을 문자열로 join한다.
        }
        

        return answer;
    }
}
function solution3(n, arr1, arr2) {
    let answer = [];
    let arr = new Array(n);
    for (let index = 0; index < arr.length; index++) {
        arr[index] =  new Array(n).fill(" ");
    }
    
    arr.forEach((e,i) => {
        for (let index = e.length-1; index > -1; index--) {
            if(arr1[i]%2 === 1){
                e[index] = "#";
            }
            arr1[i]= Math.floor(arr1[i]/2);
            
        }
        
    });
     
    arr.forEach((e,i) => {
        for (let index = e.length-1; index > -1; index--) {
            if(arr2[i]%2 === 1){
                if (e[index] ===  " ")
                    e[index] ="#"; 
            }
            arr2[i]= Math.floor(arr2[i]/2);
            
        }
        answer.push(e.join(""));

        
    });
    return answer
}

0개의 댓글