오늘 국내 모 K기업에서 위 사이트를 통해 알고리즘 테스트를 본다는 블로그 내용들을 접하고 해당 사이트에 들어가 봤다. 처음으로 가입을 진행했으니 다른 내용은 아직 손대지 못했고 WarmUp 단계 문제를 하나 맛보기로 풀었다.
국내 사이트가 아니라 그런지 모든 내용은 영문으로 나왔다. 적당히 이해를 하고도 정확한 지문 이해를 위해 구글 번역을 돌렸다. 대충 지문을 보고 이해했던 내용이랑 내용이랑 똑같았다. 과거에도 비슷한 경험이 있는데 코딩 테스트인 상황에서 영어로 만난 지문과 지문으로 초반에 당황해서 알고리즘이고 뭐고 눈에 보이지 않는 울렁증이 잠시 찾아온다.
/*
첫 문제는 양말상인 Sock Merchant 자세한 지문의 내용은 해커랭크 사이트에 들어가서 확인하도록 하자.
문제의 내용은 배열안에 존재하는 숫자들이 서로 쌍을 이루는 경우 해당 배열을 다 돌은 상황에서 몇쌍이 완성되는지
int 형 타입으로 리턴하는 것이 목표..
*/
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// 이 부분이 여러분이 문제를 해결해야하는 부분이다.
// Complete the sockMerchant function below.
static int sockMerchant(int n, int[] ar) {
if( n == 0 ) return 0;
int rtnValue = 0;
for(int idx=0; idx < ar.length; idx++ )
{
for(int jdx=idx+1; jdx < ar.length; jdx++)
{
if(ar[idx]!= 0 && ar[jdx]!= 0 && ar[idx] == ar[jdx])
{
ar[idx] = 0;
ar[jdx] = 0;
rtnValue++;
continue;
}
//문제 조건에 배열안에 값은 0이 될 수 없다고 제시한 부분이 있다.
//해결 과정에서 이미 쌍을 이룬 배열내 원소는 0으로 치환하였기 때문에 0을 만날 경우 continue
else if(ar[idx]== 0) continue;
}
}
return rtnValue;
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int n = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
int[] ar = new int[n];
String[] arItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int i = 0; i < n; i++) {
int arItem = Integer.parseInt(arItems[i]);
ar[i] = arItem;
}
int result = sockMerchant(n, ar);
bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
bufferedWriter.close();
scanner.close();
}
}
코드는 대충 이렇게 만들었다. 배열내 쌍을 이룬 원소는 0으로 치환하고 배열을 돌면서 0을 만나면 배열 순환에 단계를 1개씩 올린다.
테스트 케이스 10개중 10개를 모두 통과하고 만점을 받았으나 반복문을 사용하는 만큼 시간 복잡도나 공간 복잡도에 대해서 고려해볼 필요가 있겠다.
이런 문제를 면접에서 만난다면 땡큐지만 역시 이런건 나오지 않기에 이제라도 알고리즘 연습을 할 필요가 있다.
'Developer's Life > Dev Life' 카테고리의 다른 글
광고회사 업무 회고 [OpenRTB] 1화... (0) | 2025.03.13 |
---|---|
퇴사를 하며... (0) | 2020.11.10 |
SI 회사에 취직 후 (0) | 2017.12.01 |