연습

[자료구조] DFS (Depth-First Search)
깊이 우선 탐색 (DFS, Depth-First Search) DFS는 깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 백트래킹에 사용하는 대표적인 탐색 알고리즘. 이진 트리 순회 알고리즘과 상당이 유사하다. BFS와 마찬가지로 어떤 정점을 방문했는지 반드시 기록한다. ⇒ 이렇게 하지 않으면 무한루프에 빠질 위험이 있다. 루트 노드 혹은 임의의 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식이다. 주로, 재귀함수 또는 Stack으로 구현할 수 있다. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사. ..

[프로그래머스] 문자열 내림차순으로 배치하기
문제 나의풀이 - 입력된 문자열을 반대로 출력하는 문제 - 일단 ""을 입력받은 문자열에서 빼서 새로운 배열로 저장 - 콜렉션을 이용 reverseOrder를 쓰면 뒤집혀서 나온다 - 뒤집어진 배열을 ""을 붙혀 answer에다 전달 실행결과

[프로그래머스] 문자열 내 p와 y의 개수
문제 나의풀이 - p와 y의 개수를 비교해 같으면 true 다르면 false를 리턴하는 문제 - 제일 기본으로 for문 4개를 돌려서 개수를 뽑아봤다 - 소문자 'y' 'p'때나 대문자 'Y' 'P'일때 - count / count2라는 변수를 만들어 y일때는 count2 p에는 count로 문자열에 있으면 1씩 증가하는 형태로 구현 - 조건식이 끝나면 count와 count2를 비교해 같으면 true 다르면 false를 리턴한다 실행결과

[프로그래머스] 두 정수 사이의 합
문제 나의풀이 - 두 정수 a와 b를 비교해 속한 모든 정수의 합을 구하는 문제 - if문으로 두가지의 조건을 줬다 a가 b보다 클 경우 / b가 a보다 클 경우 - b가 a보다 크면 시작 숫자를 a라고 하고 b와 같거나 작을때까지 for문을 돌리면서 answer에다가 해당 모든 정수를 더해준다 - else if로 a가 b보다 클 경우를 똑같이 방법으로 작성한다 실행결과

[프로그래머스] 나누어 떨어지는 숫자 배열
문제 나의풀이 - arr이라는 String 배열을 가져와 divisor라는 자연수로 각각의 요소를 나누어서 맞아 떨어지면 return하는 문제 - 일단 Arrays.sort로 해당하는 arr을 정렬해준다 - stream으로 arr을 사용하겠다고 ()안에 arr을 넣어준다 - filter 메서드로 해당 요소들을 조건에 따라 걸러내는 작업을 해준다 - 만약 array가 divisor를 나누어 0이면 그걸 다시 array배열로 만들어주면서 answer에다가 저장된다 - 만약 나누어 0이 아니면 answer에는 아무것도 안 들어가니 길이가 0이 된다 - 0이면 answer에 -1을 넣어주는 식으로 코딩했다 실행결과

[프로그래머스] 가운데 글자 가져오기
문제 나의풀이 - String s에 문자열을 가져와 split으로 ""를 없애주고 String배열로 만들어줬다 - 그 String 배열 arr의 길이가 만약 짝수라면, for문을 돌리면서 i가 가운데 글자가 맞다면 그 글자와 +1한 글자를 가져와서 answer에다가 넣어준다 - +1을 왜 했냐면 글자가 짝수라면 가운데 글자는 하나가 아니라 두개이기 때문 - 홀수라면 2로 나누어서 가운데 글자를 가져온다 실행결과