디펜스 게임 (프로그래머스) JAVA
·
BackEnd/알고리즘 공부
https://school.programmers.co.kr/learn/courses/30/lessons/142085# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 각 라운드 마다 적의 수를 알려줄 때 무적권을 적절하게 잘 사용해서 최대한 많은 라운드를 처리해야 합니다. 예를 들어 4,4,5를 무적권을 사용해 처리하고 2,3을 병사로 처리하면 병사는 2명 남습니다. 다음 라운드에 3명의 적이 오므로 라운드를 해결할 수 없으므로 최대 5라운드 까지 처리 가능합니다. 문제에 대한 아이디어 제일 처음 생각한 방법은 enemy를 정렬해서 k 번째 큰 ..
연속 펄스 부분 수열의 합 (프로그래머) JAVA
·
BackEnd/알고리즘 공부
https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 이 문제는 부분 수열의 최대 합을 구하는 문제와 엄청 유사합니다. 다른 점은 펄스 수열을 곱한 부분 수열의 최대 합을 구하는 것입니다. 문제에 대한 아이디어 부분 수열의 합을 구하는 방법은 DFS를 통해 모든 경우를 조사해서 최대 합을 찾는 방법이 존재합니다. 하지만 이 문제에서는 최대 500000개 이므로 DFS로 탐색하면 시간 초과가 나올 것입니다. 그러므로 O(n) 안에 풀어야 ..
가장 큰 수 (프로그래머스) JAVA
·
BackEnd/알고리즘 공부
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr int 배열이 주어지면 각 숫자를 적절하게 조합해 제일 큰 숫자를 만들면 됩니다. 문제에 대한 아이디어 주어진 int 배열을 적절한 조건에 맞게 정렬을 하면 될 것 같습니다. 문제는 2번 예시처럼 3, 30, 34를 어떻게 정렬할 것 인가 입니다. 둘 다 맨 앞자리는 똑같지만 뒤의 자리와 합한 숫자의 크기를 각각 비교해봐야 합니다!! 이렇게 비교하면 조건이 굉장히 많이 필요할 것 같습니..
불량 사용자 (프로그래머스) JAVA
·
BackEnd/알고리즘 공부
https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 fr*d*과 일치하는 것은 frodo, crodo abc1**과 일치하는 것은 abc123 그러므로 조합은 frodo abc123, crodo abc123 2개입니다!! 문제에 대한 아이디어 배열의 크기는 1이상 8이하 입니다. banned_id도 이보다 작기때문에 완전 탐색으로 가능할 것 같습니다. banned_id와 일치하는 user_id를 찾습니다. 각각 user_id를 모든 조합..
쿼드압축 후 개수 세기(프로그래머스) JAVA
·
BackEnd/알고리즘 공부
https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 이렇게 첫 번째 영역이 주어지면 쿼드 트리와 같은 방식으로 압축하는 것 입니다. 결국 0의 갯수는 4개, 1의 갯수는 9개 입니다. 문제 해결 방법 재귀를 사용해서 풀어야 하는 문제입니다. 똑같은 공간으로 계속 나누므로 적절하게 점화시막만 잘 만들면 쉽게 풀 수 있을 것 같습니다. 이 문제는 정사각형으로 계속해서 분할하면서 정사각형 안이 모두 0이거나 1이면 합치는 형식입니다. (off..
코딩 테스트에서 문자열 관리 (JAVA)
·
BackEnd/알고리즘 공부
코딩 테스트를 볼 때 문자열을 가지고 장난치는 문제가 상당히 많이 나옵니다. 문자열 문제가 나왔을 때 대처할만한 메서드들을 공부해 보려고 합니다. 문자에 대해 문자의 배열 String.charAt(int index) // 문자 하나를 가져온다. String.toCharArray() // 모든 문자를 한 번에 배열로 가져온다. charAt은 하나하나씩 호출하므로 메서드 호출에 따른 오버헤드가 있습니다. toCharArray()는 문자열 길이에 해당하는 메모리를 사용합니다. 아스키코드 아스키코드도 문제를 풀 때 정말 많이 사용했습니다. 특히 Char를 int로 바꿀 때 자주 사용했습니다. char digit = '10'; int digitToInt = digit - '0'; 대문자를 소문자로 소문자를 대문자..