반응형

너비우선탐색이란 무엇일까?

깊이가아니라 넓게탐색한다는 의미인것 같은 생각이 든다.

 

넓게탐색한다는건 뭘까?

시작지점에서 가까운(인접한) 곳부터 탐색한다는 의미가 아닐까?

 

그렇다면 어떻게구현을해야할까?

 

Queue와 이중배열을 이용하여 구현하도록 하자.

 

이중배열로 지점에대한 정보를 만들어 그래프화 한다.

아래의 내용으로보면 이중배열의 1번째값에 2,3,8이 들어가있는데 

이는 1이 2,3,8과 인접한다는 의미이다.

 

따라서 해당 배열을 돌면서 큐에 들어간내용이있는지를 확인하며 없으면 큐에 넣어주고 

입력된순서대로 빼주는 모양이다.

 

 

 

 

import java.util.LinkedList;
import java.util.Queue;

public class BFS{
    public static void main(String[] args){
        int[][]graph = {{},{2,3,8},{1,7},{1,4,5},{3,5},{3,4},{7},{2,6,8},{1,7}};

        boolean[] visited = {false,false,false,false,false,false,false,false,false};

        int start = 1; //시작노드
        //Queue구현
        
        Queue<Integer> queue = new LinkedList<>();
            queue.add(start);

            visited[start] = true;

            while(!queue.isEmpty()){
                int v = queue.poll();
                System.out.println(v+" ");

                for (int i : graph[v]){
                    if(visited[i] == false){
                        queue.add(i);
                        visited[i] = true;
                    }
                }
            }
    }
}

 

반응형

'알고리즘 > 알고리즘(java,프로그래머스1,2단계위주)' 카테고리의 다른 글

문자열 내 p와 y의 개수  (0) 2022.09.21
핸드폰번호 가리기  (0) 2022.09.21
자릿수 더하기  (1) 2022.09.21
소수만들기  (0) 2021.09.19
키패드 누르기  (0) 2021.09.17
반응형

문제 설명

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

제한사항
  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

입출력 예

sanswer
"pPoooyY" true
"Pyy" false

입출력 예 설명

입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.

입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

※ 공지 - 2021년 8월 23일 테스트케이스가 추가되었습니다.

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int p = 0;
        int y = 0;
        for(int i=0; i<s.length(); i++){
            System.out.println(s.substring(i,i+1).toLowerCase());
            if(s.substring(i,i+1).toLowerCase().equals("p")){
                p++;
            }else if(s.substring(i,i+1).toLowerCase().equals("y")){
                y++;
            } 
        }    
        if(p!=y){
            answer = false;
        }
       
        return answer;
    }
}
반응형

'알고리즘 > 알고리즘(java,프로그래머스1,2단계위주)' 카테고리의 다른 글

BFS(너비우선탐색) feat JAVA  (0) 2023.04.19
핸드폰번호 가리기  (0) 2022.09.21
자릿수 더하기  (1) 2022.09.21
소수만들기  (0) 2021.09.19
키패드 누르기  (0) 2021.09.17
반응형

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예phone_numberreturn
"01033334444" "*******4444"
"027778888" "*****8888"

 

class Solution {
    public String solution(String phone_number) {
        System.out.println(phone_number.length());
        
        String answer = "";
        
        for(int i=0; i<phone_number.length()-4; i++){
            answer += "*";
        }
        answer += phone_number.substring(phone_number.length()-4, phone_number.length());
        System.out.println(answer);
        
        return answer;
    }
}

 

반응형

'알고리즘 > 알고리즘(java,프로그래머스1,2단계위주)' 카테고리의 다른 글

BFS(너비우선탐색) feat JAVA  (0) 2023.04.19
문자열 내 p와 y의 개수  (0) 2022.09.21
자릿수 더하기  (1) 2022.09.21
소수만들기  (0) 2021.09.19
키패드 누르기  (0) 2021.09.17
반응형

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.제한사항

  • N의 범위 : 100,000,000 이하의 자연수
  • 입출력 예Nanswer 
    123 6
    987 24
    입출력 예 설명입출력 예 #1
    문제의 예시와 같습니다.
  • 입출력 예 #2
    9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        int mok = 0;
        int namuz = 0;
        
        while(true){
            mok = n/10;
            namuz = n%10;
            n = mok;
            
            answer=answer+namuz;
            
            if(mok<10){
                answer= answer+mok;
                break;
            }
        }
   

        return answer;
    }
}

 

반응형

'알고리즘 > 알고리즘(java,프로그래머스1,2단계위주)' 카테고리의 다른 글

문자열 내 p와 y의 개수  (0) 2022.09.21
핸드폰번호 가리기  (0) 2022.09.21
소수만들기  (0) 2021.09.19
키패드 누르기  (0) 2021.09.17
숫자 문자열과 영단어  (0) 2021.09.17

+ Recent posts