알고리즘 문제 풀이

알고리즘 문제 풀이

[Java] 프로그래머스 : 옹알이(2)

[Java] 프로그래머스 : 옹알이(2) https://school.programmers.co.kr/learn/courses/30/lessons/133499 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 일단 연속으로 두개의 단어를 발음하지 못하므로, "ayaaya", "yeye", "mama", "woowoo"와 같은 단어가 나오면 제외시킨다. 나머지의 경우는 그냥 replace함수를 사용하여 공백처리를 해주었다. 첫번째 시도 import java.util.*; class Solution { public int solution(String[] ba..

알고리즘 문제 풀이

[Java] 프로그래머스 : 숫자 짝꿍

[Java] 프로그래머스 : 숫자 짝꿍 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 주어진 두 수에서 공통으로 나타나는 정수 세 개를 찾아내고, 그 숫자들로 만들 수 있는 가장 큰 세자리 정수가 무엇인지 알아내야 한다. 짝이 없으면 -1을, 짝이 0으로만 구성되면 0을 출력해야 한다. 짝을 만들 때, 각각의 값을 기존 값에서 제외시키도록 해야 한다. 예를들어, X = 5525, Y = 1255면 X에는 5가 3개, Y에는 5가 2개이..

알고리즘 문제 풀이

[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위

[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위 https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 최대한 많이 맞히는 경우와 최대한 적게 맞히는 경우에 대해서 생각해 보았다. 최대한 많이 맞히려면, 0으로 들어온 값은 반드시 당첨 번호로 카운트를 해줘야 하며, 최대한 적게 맞히려면, 0으로 들어온 값은 반드시 틀린 번호이므로 카운트 하지 않아야 한다. 당첨 번호의 기준은 순서 상관 없이 번호만 일치하면 되기 때문에 해시맵을 사용해..

알고리즘 문제 풀이

[Java] 프로그래머스 : K번째 수

[Java] 프로그래머스 : K번째 수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 처음에 commands의 각 요소들이 두자리 수 이상의 정수가 온다는 것을 인지하지 못하고 String으로 변환하여 substring으로 잘라내다가 2, 6번 케이스에서 오류가 났었다. array가 [1, 5, 2, 6, 3, 7, 4]와 같은 경우, String으로 변환하면 1526374가 되고 필요한 부분을 잘라 각각을 정수로 다시 변환하여 k번째 ..

알고리즘 문제 풀이

[Java] 백준 2206 : 벽 부수고 이동하기

[Java] 백준 2206 : 벽 부수고 이동하기 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 접근 일반적인 bfs 방문체크에서 벽을 부수는 것을 옵션으로 추가해야하는 문제이다. visted를 3차원 배열로 선언하여, x, y축과 벽을 부섰는지의 여부를 체크할 수 있도록 구현했다. 최초 방문체크를 할 때 벽을 아예 부수지 않는 탐색자와 벽을 한 번 부술 수 있는 탐색자로 나눈다. visited[x][y][0] = t..

알고리즘 문제 풀이

[Java] 백준 14226 : 이모티콘

[Java] 백준 14226 : 이모티콘 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 접근 1. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 2. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 3. 화면에 있는 이모티콘 중 하나를 삭제한다. 화면에 있는 이모티콘의 수를 x, 클립보드에 있는 이모티콘의 수를 y라고 가정한다. 복사 -> 클립보드 저장의 경우: [x, y] -> [x, x] 붙여넣기의 경우: [x, y] -..

알고리즘 문제 풀이

[Java] 백준 1987 : 알파벳

[Java] 백준 1987 : 알파벳 알파벳 적힌 칸을 한 번씩만 지나서 최대한 몇 칸을 움직일 수 있는가를 구현한다. DFS로 구현할 경우, 각각의 루트에 대해서 지나갈 수 있는 값들 중 최댓값을 출력할 수 있도록 해야한다. 특정 루트에 대한 탐색이 끝나면 다음 루트에 대한 탐색도 온전하게 진행되어야 하므로, dfs의 재귀가 끝날 때 해당 알파벳에 대한 방문 처리를 초기화 해주어야 한다. 방문 처리를 초기화 해주지 않으면 다음 루트에 대한 탐색에 문제가 생기기 때문이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..

알고리즘 문제 풀이

[Java] 백준 2667 : 단지번호붙이기

[Java] 백준 2667 : 단지번호붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 입력해야하는 값이 아래와 같이 주어진다. 7 0110100 0110101 1110101 0000111 0100000 0111110 0111000 첫째줄은 지도의 크기 N이며, 그 다음 N줄에는 N개의 자료가 입력된다. 위의 정보를 토대로 NxN 크기의 map을 먼저 만들어야 한다. 각 행마다 하나의 문자열을 받는다고 가정하면, 0번 행에는 '0110100'이라는 문자열을 분리하여 각각의 행에 정수로 치환한 값을 할당해야..

알고리즘 문제 풀이

[Java] 백준 2504 : 괄호의 값

[Java] 백준 2504 : 괄호의 값 난이도 🥈실버1 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 괄호값은 2×값(X) 으로 계산된다. ‘[X]’ 의 괄호값은 3×값(X) 으로 계산된다. 올바른 괄호열 X와 Y가 결합된 XY의 괄호값은 값(XY)= 값(X)+값(Y) 로 계산된다. 접근1 (()[[]])([]) (()[[]]) -> 2*(2 + (3..

알고리즘 문제 풀이

자바 코테용 문법 정리

자바 코테용 문법 정리 라이브러리 땡겨오기 import java.util.*; import java.io.*; 배열 선언 String[] arr1 = new String[5]; int[] arr2 = {1, 2, 3}; int N = 3; int[] arr3 = new int[N]; Arrays int arr[] = {10, 8, 11, 2, 3, 0}; // 오름차순 {0, 2, 3, 8, 10 ,11} Arrays.sort(arr); // 내림차순 {11, 10 , 8, 3, 2, 0} Arrays.sort(arr, Collections.reverseOrder()); // int 타입 배열 내림차순(Integer로 변경 필요) Integer arr2[] = Arrays.stream(arr).boxed..

알고리즘 문제 풀이

[C++] 백준 1931: 회의실 배정

[C++] 백준 1931: 회의실 배정 🥈 실버 1 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 접근 이미 진행중인 회의가 있다면, 다음 회의로 현재 회의가 끝나는 시간과 가장 가까운 회의가 선택되어야 최댓값을 가질 수 있다. 반복문을 한번만 돌려서 이를 효과적으로 구현하기 위해서는 입력된 값을 어떤 기준을 삼아 정렬시킬 필요가 있다. 위의 예제 입력 케이스를 참고하여 x축을 회의 시간으로 해서 나타내면 아래와 같다. 예제에서 입력 값들을 어떻게 정렬해야 할지에 대한 힌트를 주고 있었다. 회의가 끝나는 시간을 기준으로 입력받은 pair의 값을 정렬하면 된다..

알고리즘 문제 풀이

[C++] 백준 16953: A -> B

[C++] 백준 16953: A -> B 🥈실버 2 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A 81 -> 8 -> 4 -> 2와 같이 흘러간다. 이렇게 보면 규칙을 쉽게 찾을 수 있다. 1. B가 2로 나눠지는 경우 2로 나누고 count++ 2. B가 2로 안나눠지는데 맨 오른쪽에 1이 있으면 1지우고 count++ 3. B가 2로 안나눠지는데 맨 오른쪽에 1도 없으면 그냥 안되는 거라서 -1 출력 후 프로그램 종료 예제 케이스 4..

lazarus0320
'알고리즘 문제 풀이' 카테고리의 글 목록 (2 Page)