Collection

· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]코니는 매일 다른 옷을 조합하여 입는 것을 좋아합니다.예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.종류이름얼굴동그란 안경, 검정 선글라스상의파란색 티셔츠하의청바지겉옷긴 코트코니는 각 종류별로 최대 1가지 의상만 착용할 수..
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. [제한 조건]strings는 길이 1 이상, 50 이하인 배열입니다...
2차원 배열을 1차원으로 정리하는 방법들을 정리해 봤습니다.코테에서도 많이 활용되는 부분입니다. - 중첩된 for 루프를 사용하여 변환하기fun flattenArray(twoDArray: Array): IntArray { val rows = twoDArray.size val cols = twoDArray[0].size val oneDArray = IntArray(rows * cols) var index = 0 for (i in 0 until rows) { for (j in 0 until cols) { oneDArray[index++] = twoDArray[i][j] } } return oneDArray}fun main() ..
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12944 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해 보세요.arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. [입출력 예] [풀이]주어진 배열의 요소를 모두 더한 후에 해당 배열의 사이즈만큼 나눠줍니다.예시처럼 소수점으로 return 되는 경우를 고려하여 문제 반환 타입은 Double이..
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12932?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. n은 10,000,000,000 이하인 자연수입니다. [입출력 예] [풀이]자연수 n이 주어지면 해당 숫자를 문자열로 변환합니다. n.toString()을 하면 결국 Char를 원소로 갖는 배열을 구성하게 됩니다. 그리고 해당 ..
데이터 필터링 작업을 하던 중에 조금 특수한 케이스를 처리해야 하는 상황이 생겨 몇 가지 컬렉션 함수를 실무에서 사용했습니다. 어떤 boolean 값으로 구분이 가능한 데이터 리스트가 존재하고, 이 중 false인 부분을 다시 특정 날짜값에 의해 그룹화하여 어떤 필드의 최대 값을 가지고 있는 요소만 살리도록 하는.. 그런 로직이 필요했습니다. 일단 먼저 boolean 값 구분을 위해 partition 함수를 사용했습니다. 명시한 조건에 따라 리스트를 분리해 줍니다. 저는 true/false 조건이기 때문에 변수 2가지로 리스트를 구분할 수 있었습니다. val (fineDatas, nonFineDatas) = allDatas.partition { it.isFine() } 다음으로 nonFineDatas를 ..
앱 테스트 진행 중에 다음과 같은 Exception이 발생했다. Fatal Exception: java.util.ConcurrentModificationException 여러 스레드에서 하나의 컬렉션에 접근할 때, 동시성 문제가 발생하는 것으로 확인된다. 문제가 발생한 코드로 이동해 보니... object DataManager { private var dataInfos = ArrayList() ..... object Manager 내부의 dataInfos라는 리스트가 있고, 해당 DataManager가 외부에서 여러 스레드에 동시 호출되며 dataInfos에 접근하던 중 문제가 발생하는 것으로 확인했다. 싱글톤 하위 리스트를 여러 스레드 접근에 안전하도록 처리할 필요가 있었다. object DataMan..
다음과 같은 두 개의 List를 각각 인덱스 순서대로 짝을 맞추어 Map으로 변환하려 한다. zip() : 두 개의 리스트를 쌍으로 묶어준다. toMap() : Map으로 변환한다. val map = name.zip(yearning.toTypedArray()).toMap()
제일 상위에 있는 차원의 배열을 해제해 준다. List 형태로 반환되며, 모든 중첩 배열을 해제해 주기 위해 n 차원만큼 flatten() 처리해주어야 한다. fun main() { val arr = arrayOf(arrayOf(1,2,3), arrayOf(7,8,9), arrayOf(arrayOf(100, 101, 102), arrayOf(201, 202, 203))) println(arr.contentDeepToString()) val arr2 = arr.flatten() println(arr2.toString()) }
SeungYong.Lee
'Collection' 태그의 글 목록