본문 바로가기
728x90

알고리즘7

[프로그래머스][kotlin] 크레인 인형뽑기 게임 import java.util.* class Solution { fun solution(board: Array, moves: IntArray): Int { var answer: Int = 0 var basket: Stack = Stack() moves.forEach { for (i in board.indices) { if(board[i][it-1] != 0) { if(!basket.empty() && basket.peek() == board[i][it-1]) { answer += 2 basket.pop() } else { basket.push(board[i][it-1]) } board[i][it-1] = 0 break } } } return answer } } 문제를 풀며 알게 된 명령어 peek(): .. 2021. 4. 2.
[프로그래머스][kotlin] 두 개 뽑아서 더하기 보호되어 있는 글 입니다. 2021. 3. 31.
[algospot] FESTIVAL. 록 페스티벌 (종만북) <C++> algospot.com/judge/problem/read/FESTIVAL algospot.com :: FESTIVAL 록 페스티벌 문제 정보 문제 커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다. 이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다. 전체 algospot.com 이전에 사둔 종만북을 심심할 때마다 천천히 읽어보려고 한다. 요즘 사용하고있는 kotlin언어를 사용할 수 없어 아쉬웠다. (나아아는... C++하고 kotlin밖에 모르는데에...ㅠㅠ) 문제 풀이 생각과 구현이 편한 방법을 선택했다. . . . 이런 식으로 계속해서 해나가는 간단한 방법. 정답 코드 #include using namespace std; int main() { in.. 2021. 2. 6.
알고리즘의 시간복잡도 알고리즘의 성능 평가 같은 문제를 풀어도 여러 방법의 알고리즘이 나옵니다. 여러 알고리즘 중 가장 효율적인, 성능이 좋은 방법을 택하는 것이 좋겠죠. 옛날에는 메모리가 비싸 메모리를 가장 적게 사용하는 것이 최적의 알고리즘이었습니다. 그러나 요즘은 메모리의 가격이 낮아져 알고리즘의 성능을 따질 때 가장 중요하게 보는 것은 '시간'입니다. 시간 복잡도 알고리즘의 성능은 시간으로 나타낼 수 있습니다. 다만 컴퓨터의 성능에 따라 차이가 있습니다. 그래서 시간이 얼마나 걸리는지를 알 수 있는 좀 더 객관적인 지표가 필요합니다. 따라서 보통 시간복잡도(Time complexity)라는 지표를 사용합니다. 여기서 말하는 시간복잡도는 입력 값에 따른 처리에 걸리는 시간을 말합니다. 여기서 말하는 시간은 "연산의 실행.. 2020. 9. 16.
[NYPC] [2019 예선] 1. 최대 HP 문제 당신은 게임 "마비노기 영웅전"의 전투 로그 분석을 맡게 되었다. 이번에 분석할 전투는 마법 전문가인 이비의 전투이다. 이비는 몬스터와 전투를 했고, 이 때 전투 과정에서 발생하는 게임 로그인 전투 로그는 시작 체력과 여러 개의 턴으로 이루어져 있다. 그리고 각 턴 마다 다음의 로그가 한 줄에 하나씩 기록되어있다. 이비가 데미지를 받는다. 이 턴 이후에 체력이 h 만큼 줄어든다. 단, 데미지를 받아서 체력이 0 이하가 되는 경우는 없었다. 이 로그는 1 h 형태로 기록된다. 이비가 "회복" 스킬을 사용한다. 이 턴 이후에 체력이 h만큼 회복된다. 단, 회복을 해서 최대 체력을 넘어가는 경우는 없었다. 이 로그는 2 h 형태로 기록된다. 이비가 "최대 생명력" 스킬을 사용한다. 이 턴 이후에 체력이 .. 2020. 8. 30.
구름 문제은행 (시공의 폭풍 속으로) <C++> //방법1. #include using namespace std; int main() { int arr1[4], arr2[5], i, j, cnt=5; for(i=0; i>arr1[i]; for(i=0; i>arr2[i]; for(i=0; i 2020. 7. 17.
구름 문제은행 (진법 변환) <C++> 코드를 조금 길게 짠 것 같지만 일단은 맞았다. 음... 다음엔 좀 더 줄여보는걸로.. 그나저나 1단계라니.. 윤군님 너무하십니다ㅠㅠ #include #include using namespace std; int n, r, sw, cp, cnt; string t; int main() { cin>>n>>t; //n과 t를 입력 받는다. for(r=2; r10) //11진법 이상일 때------------------------------------- for(int i=t.size()-1; i>=0; i--) { if((cp%r)>=10) //10이상은 영어로 바꾸어야함 { if((char)(cp%r+55)==t[i]) sw=1; else { sw=0; break; } } else { if((char)(cp%r.. 2020. 5. 30.
728x90