728x90

전체 글 119

kotlin 프로그래머스 lv2 n^2 배열 자르기

해당 문제를 정리해보면 n과 left , right는 매개변수로 주어진다. 예를들어 n = 3이고 left 와 right가 각각 2와 5라면 위의 영상과 같이 배열이 만들어진다. 나는 맨처음 이문제를 보자마자 2차원 배열을 생성하고, 그 후 그 리스트를 주어진 left와right 를 이용해서 잘랐다. 그래서 코드는 아래와 같이 작성했다. 하지만 제출 후 메모리 초과에러가 발생했다. 그래서 다른 블로그를 찾아보기로했다. https://ongveloper.tistory.com/501 프로그래머스 n^2 배열 자르기 Kotlin (구현) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left..

kotlin 프로그래머스 lv2 H-Index

해당 문제를보고서 문제자체가 이해가 가질않아서 H-Index에 대해 찾아보았다. 즉, 피인용수 리스트 citations 를 내림차순으로 정렬한 후, 인덱스의 1더한 값과 리스트 요소를 비교해서 작아지기 인덱스값보다 인용수가 작아지기 직전의 시점에서의 위치가 H-지수가 된다는 것이다. 그래서 나는 코드를 아래와 같이 작성하였다. 테스트는 통과됐지만, 제출 시 통과되지 않아서 다른 사람의 풀이를 보았다. 그 중 아래 코드가 정말 간결했다. fun solution(citations: IntArray): Int = citations.sortedDescending().filterIndexed { index, i -> (index + 1) [Kotlin] 프로그래머스 > 코딩테스트 연습 > 정렬 > H-index ..

Calculator lv4 추상클래스 설계

Calculator 과제를 수행하면서 lv4가 가장 어려웠다. lv3까지는 lv1의 내용을 복붙해서 기능만 나눴기때문에 파일만 추가해주고 끝이었었다. 하지만 아직도 추상클래스에대한 사용법이 미숙해서 어려웠던것 같다. 원해 파일구성은 6파일이었으나, 계산을수행하는 파일의 코드가 길어져서 RunningCalculate.kt파일과 Calculator.kt파일로 나눴다. [AbstractOperation.kt] package com.ellycrab.calculatorlv4 open abstract class AbstractOperation { //자식에게서만 사용할 수 있도록 protected로 설정함, 모든 연산에서 형변환은 공통임 protected fun convertToDouble(str: String?)..

과제/계산기 2024.03.07

Calculator lv1~lv4

Calculator과제를 통해서 개념정리를 할 수 있었다. 맨처음 readLine()이 아무리 터미널 창에 쳐도 에러만 떠서 포기하려했었으나, 이번 주차는 화면에 중점을 두기보단 기초개념 복습 및 정리기간이었기 때문에 어떻게든 찾아서 해결했다. 문제는 이러했다. 애뮬레이터 버튼을 눌러서 오류가 났었던 것이었다 ㅎㄷㄷ 이것때문에 아까운 시간을 날렸었던것 같다. 나는 아래와 같이 다시 프로젝트를 시작했다. 이상태에서 시작했어야했고 처음부터 나는 Empty view를 생성해서 망했던것 같다. 그 후는 실행이 정상적으로 되었다. lv1~lv4까지 구현해보았다. lv1: 더하기, 빼기, 나누기, 곱하기 연산을 수행할 수 있는 Calculator 클래스를 만들고, 클래스를 이용하여 연산을 진행하고 출력하기 lv2:..

과제/계산기 2024.03.07

kotlin 프로그래머스 lv2 연속 부분 수열 합의 개수

1.의도 및 이유: 원형 수형을 구성하고, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 구하는 문제 , 주어진배열 elements를 원형으로 배치하면서 길이가 1인 연속 부분 수열을 모두 고려하고, 중복을 제외한 합의 개수를 계산한다. 코드에서는 원형 수열의 특성을 활용하여 타이아웃을 피하고자 함. 2.코드 동작 로직: 원형 수열에서 중복을 제외한 모든 연속 부분 수열의 합의 개수를 반환함. 중복을 피하기 위해 set을 사용했다. 원형 수열의 특성에따라 길이가 1인 연속 부분 수열을 모두 고려한다. startIdx와 endIdx를 결정해서 부분 수열을 생성하고, 합을 계산한 후 set에 추가한다. endIdx가 배열 길이를 벗어날 경우를 고려하여 원형 수열에서 다시 시작할 수 있도록 %..

kotlin 프로그래머스 lv2 괄호 회전하기

1. 의도 및 이유 isValid 함수를 통해 문자열이 올바른 괄호 문자열인지 확인했고 함수 내부에서는 괄호의 쌍이 올바른지 확인하기위해 스택을 활용했다. 스택은 열린 괄호를 저장하고, 닫힌 괄호를 만날 때 매칭이 되면 스택에서 제거하는 과정을 거쳤다. 2. 코드 동작 로직 isValid함수: 문자열을 순회하면서 열린 괄호를 스택에 추가하고, 닫힌 괄호를 만날 때 해당 괄호의 짝이 스택의 맨 위에 있는지 확인하여 짝이 맞으면 스택에서 제거함 모든 문자열을 확인후 스택이 비었다면 올바른 괄호 문자열로 판단 3. 버그 또는 에러 및 해결 맨처음 for문으로 인덱스를 일일이 이동시키는 방법으로 구현시도하였으나 계속 에러나서 다른 코드를 참조하면서 고쳐나가니 에러또는 버그는 없었음 해당 문제를 맨처음 for문을..

3월5일 스파르타 코딩클럽 lv1과제 및 깃허브 업로드

스파르타 코딩클럽에서 주차별 과제 수행 후 깃에 업로드 하기위해 메인 브랜치에서 내 브랜치를 생성해서 업로드 하려고했으나 계속 에러가 났다. 하지만 "git checkout -b eun"이라는 명령어를 입력했더니 브랜치 변경이 되었다. 아직도 깃이 익숙치 않다. 앞으로 익숙해지기위해 더 노력해야겠다. 그 후 eun이라는 브랜치를 없애기 위해 eun 브랜치에서 git branch main이라는 브랜치를 생성 후 [eun-> main] git check out main eun 을 지우려고하는거라서 main으로 브랜치를 옮긴후 [main삭제실행] git branch -d eun 명령을 실행했더니 성공적으로 지워졌다. 그 후 배쉬창을 빠져나가기위해 exit명령어를 입력했고 성공적으로 logout이 일어났다.

TIL/selfpractice 2024.03.05

kotlin 프로그래머스 lv2 귤 고르기

해당문제에서 tangerine배열을 예시로 문제를 설명해줬다. tangerine배열이 [1, 3, 2, 5, 4, 5, 2, 3] 이렇게 주어질때, 최대한 서로다른 종류를 유지하면서 k값에해당하는 귤의 갯수로 담으면 된다. 그 후 서로 다른종류가 몇가지가 있는지 return하면된다. 1. 의도 및 이유 이 코드의 목적은 주어진 배열 tangerine에서 각 요소의 등장 횟수를 계산하고, 등장 횟수가 높은 순서로 누적합이 특정 값 k를 초과하지 않는 최소 개수의 요소를 선택하는 것이다. 이는 주어진 문제에 대한 최적화된 해결 방식을 찾기위해서이다. 2. 코드 동작 로직 배열 tangerine을 순회하면서 각 요소의 등장 횟수를 tangerineMap 해시맵에 기록. 등장 횟수를 기반으로 내림차순으로 정렬한..

kotlin 프로그래머스 lv2 멀리 뛰기

예를들어 n = 4 로 주어진다면, (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 이렇게 5가지 경우가 리턴된다. 1. 어떤 의도, 이유로 해당 기능을 구현했는지 주어진 문제에서 주어진 규칙에 따라 멀리뛰기를 할때, 마지막 위치에 도달하는 방법의 수를 계산을 하는것이 목적인데 다이나믹 프로그래밍을 활용하여 중복계산을 피하고 효율적으로 결과를 도출하려는 의도가 있습니다. 2. 해당 기능은 어떤 로직으로 코드가 작동하는지 dp 배열은 각 위치까지 도달하는 방법의 수를 저장하는 배열이다. dp[0]은 초기값으로 1로 설정되어있다. 이후, 반복문을 통해 각 위치에 도달하는 방법의 수를 동적으로 계산한다. 이중 반복문에서는 한 번에 1칸 또는 ..

kotlin 프로그래머스 lv1 N개의 최소공배수

해당 문제를 이상한 방식으로 풀어서 시간이 꽤 오래걸렸다. 맨처음에는 numberList를 만들어주고 그 안에 for문 두개를 돌려서 arr에있는 값과 내가 직접만든 배열 1~100까지의 수를돌리고 서로 곱했다. 그 중 같으면서 가장 작은수를 추출하려는데 생각보다 코드가 길어져서인터넷 검색을통해서 풀이법을 참고했다.코드는 아래와 같이 작성했다. 아래의 최소공배수와 최대공약수 재귀함수는 인터넷에 검색이 쉽게 되어서해당부분을 참고했고, answer 을 arr요소중 하나로 초기화 했을때 forEach문에서 요소 it과 lcm연산이 되어결과가 return되었다.

728x90