프로그래머스

프로그래머스

[프로그래머스] 프로그래머스 Level2 짝지어 제거하기 Java

문제 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 풀이 처음엔 문자열의 문자에 대해 탐색을 돌리면서 문자열을 자르고 붙이고를 반복하며 풀었다가 정확성은 100점을 맞았지만 효율성에서 0점을 받아 이후 Stack을 통해서 해결할 수 있었다. Stack을 이용하면 O(n)으로 해결할 수 있다. 문자열의 모든 원소들에 대해 하나씩 확인해 주면서 Stack의 top과 이제 들어올 문자가 같으면 제거할..

프로그래머스

[프로그래머스] 프로그래머스 Level3 네트워크 Java

문제 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 DFS로 해결할 수 있었다. visited 배열을 만들어서 노드의 방문 여부를 체크할 수 있도록 해주었고, 이후에는 방문하지 않은 노드들에 대해서 깊이 우선 탐색을 시켜주어서 또 다른 연결된 노드들을 쭉 탐색시켜주었다. 이후 깊이 우선 탐색이 끝나면 연결 요소(네트워크)가 하나 만들어지는 것이므로 answer를 1 증가시켜주었고, 이러한 방법으로..

프로그래머스

[프로그래머스] 프로그래머스 Level2 JadenCase 문자열 만들기 Java

문제 https://programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고 programmers.co.kr 풀이 문자열 + 구현으로 해결할 수 있었다. 우선 split 메서드를 사용하여 공백 단위로 문자열을 잘라주고 str이라는 새로운 배열에 담아주었다. 이후에는 str의 모든 원소들을 탐색하면서 해당 문자열의 첫 번째 문자가 숫자이면 다음 인덱스의 문자를 대문자로 만들어주었고, 그게 아니라면 해당 인덱스에 대응하는 문자를..

프로그래머스

[프로그래머스] 프로그래머스 Level2 올바른 괄호 Java

문제 https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 풀이 자료구조 스택을 활용하여 해결할 수 있었다. 문제를 풀기 이전에 우리는 올바른 괄호의 특징이 여는 괄호와 닫는 괄호의 쌍이 1:1 매칭이 된다는 특징을 알고 가야 한다. 이 점을 이용하여 문자열의 모든 원소들에 대하여 탐색하면서 만약 여는 괄호인 '(' 가 나오면 스택에 넣어주었고, 닫는 괄호인 ')'가 나..