Algorithm
-
[Algorithm] 백준 13460번 : 구슬 탈출 2Algorithm 2020. 9. 10. 21:36
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 카카오 코테 풀다가 죽을 것 같아서 삼성 코테 기출을 풀어보는데 ^^... 삼성도 어려운데? 누가 쉽다고...... 내가 못하는건가.... * 이번 삽질 - 빨간공 움직이고 파란공 움직인 다음, 진짜 빨간공이 못움직였던게 맞는지 한번더 빨간공 확인하는 작업 - 답 리턴할 때는 continue 조건 다 지난 이후에 return - 중복 방문이 허용되..
-
[Algorithm] 프로그래머스 '2020 KAKAO BLIND RECRUITMENT' C++ : 자물쇠와 열쇠Algorithm 2020. 9. 5. 20:08
https://programmers.co.kr/learn/courses/30/lessons/60059# 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 완전 꼬여서 못풀다가 힌트 보고 나서야 풀었다. 내가 풀던 방식은 dfs로 경로를 찾아서 5가지의 이동중(상, 하, 좌, 우, 회전) 맞물리는 경우를 찾으려고 했던 거였다. 근데 잘 안됨. 그래서 전체 board(key+lock 실행할 큰 판)를 두고 맞물리는지 브루트포스로 풀면 된다는 힌트를 보고 품. 맨 처음에 board에 lock 자리에 lock과 똑같이 0, 1을 넣어놓는다. 그리고 key를 board..
-
[Algorithm] 프로그래머스 '2020 KAKAO BLIND RECRUITMENT' C++ : 괄호 변환Algorithm 2020. 9. 3. 20:59
https://programmers.co.kr/learn/courses/30/lessons/60058# 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr u, v를 나누는 split 함수와 "올바른 괄호 문자열"인지 확인하는 is_right 함수 구현까지는 빨리 했다. 근데 재귀함수 사용에서 막혔다. 특히, 가장 헷갈렸던 부분은 u, v를 글로벌 변수로 둬서 계속 바뀌는게 유지되는 상황 안에서 재귀함수 호출 후의 바뀐 u, v를 재귀함수가 호출된 곳으로 다시 돌아왔을때도 그대로 사용하게 돼서 꼬였다. 재귀함수를..
-
[Algorithm] 프로그래머스 '2020 KAKAO BLIND RECRUITMENT' C++ : 문자열 압축Algorithm 2020. 9. 2. 21:57
https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 브루트포스 쓴듯! 그냥 [1개로 자르기~문자열 전체 길이로 자르기] 이렇게 for문으로 돌리고 그 안에서 문자열을 자르고 계속 이전 단위 스트링과 새로 잘린 스트링을 비교하면서 1. 같으면 카운트만 증가시키고 2. 다르면 이전까지 카운팅된 카운트를 '문자열로 변환후' 그 문자열의 자리수를 answer에 더해주고, 더불어 현재 새로 잘린 스트링의 길이도 an..
-
[Algorithm] 프로그래머스 C++ : 단어 변환Algorithm 2020. 9. 1. 20:49
https://programmers.co.kr/learn/courses/30/lessons/43163# 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 완전 헤맨 문제 dfs를 쓰는 것은 알았다 1. 테스트케이스가 다 3글자짜리 문자열이라서 1글자만 틀리다고 풀어야 될 거를 2글자가 맞다는 걸로 풀어버림 (이것때문에 몇시간 삽질) 2. dfs 재귀를 return 할때, answer=0이 되는 조건도 다 일일히 세서 return 조건을 주려고 함. 그냥 target일때..
-
[Algorithm] 프로그래머스 C++ : 네트워크Algorithm 2020. 9. 1. 16:26
https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 그래프의 개수를 구하는 문제 평소 하던대로 dfs를 돌리고 dfs가 한번 다 돌아갈때마다 그래프가 1개이기 때문에 그때마다 answer를 +1 해준다 Code #include #include using namespace std; int check[200]; void dfs(int x, int n, vector computers) { check[x] = ..
-
[Algorithm] 프로그래머스 C++ : 타겟 넘버Algorithm 2020. 9. 1. 01:03
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 재귀함수를 이용한 dfs를 사용해 되는 문제 재귀함수에 sum과 idx와 방문하는 숫자(x)를 넘긴다. 재귀함수는 방문하는 숫자(x)를 sum에 더하면서 시작한다. 이후에 1. numbers[idx]에 -1을 곱한 걸로 dfs 재귀함수에 넘기고 2. 그냥 numbers[idx]를 dfs 재귀함수에 넘긴다. 그..