이번 프로젝트 100 시즌 3의 경우에는 시즌 2에 3개도 많다고 생각을 했지만, 이제는 정말 자연스러워진 1일 1시쓰기, 그리고 그나마 부담 없이 다른 사람들의 출퇴근 모습과 서로 으쌰으쌰 하면서 존버(조....온 ㄴ...ㅏ 버...티는 이런말이 음...) 므튼! 존버를 하는 그런 모습 (하지만 본인은 존버에 실패했다고 한다;;;;)을 보며 응원을 하며 그리고 저는 개인적으로 이 프로젝트는 누군가가 생각이 나는 프로젝트라 이번에도 당연히! 그리고 같은 매니저님께서 열어주셔서 신청!!

 

그리고, 새로운 도전으로 코딩과 소제가 정해진 짧은 나에대한 글쓰기, 이 두가지에 대해서 진행을 좀 새롭게 해 보며, 이번 프로젝트부터는 매일 가능하면 관련 내용들을 포스팅에 담아두려고 합니다.

 

새로운 도전 첫번째! 코딩테스트 도전1일1알고리즘 도전

 

사실 하루만에 크게 느낀게 없을 거라 생각했습니다. 그리고 하루 한다고 달라질 것도 없다 생각했지만, 100일간 하면 달라질 것이다 생각하고 시작을 했습니다.

 

하지만 결론부터 이야기하면, 1일차, 결국 예전과 같이 하나도 한번에 풀지 못했고, 그 하나를 결국 풀어 내서, 제가 부족했던 점과 앞으로 프로그래밍에 대해서 알고리즘 공부나, 코딩 시험을 준비해야 할 방향에 대한 감은 확실하게 잡을 수 있었습니다.

 

이번 플백 시즌 3에서 저에게는 가장 어려운 프로젝트가 될 것 같지만, 한번 징하게 붙들고 해 보려고 합니다. 인증은 날로 하더라도 실제 프로젝트를 설렁설렁하지 않게되길 바라며, 작심 3일의 1/3을 잘 끝낸 내용을 정리합니다.

 

 

 


 

프로그래머스 lv.1 부터 시작합니다

언어선택: JAVA, C#, C++,GO,JS,Kotlin, Python2, Python3, Ruby, Scala, Swift

 

[문제1의 프로그래머스 링크]

[문제 설명]

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
  3. 2에서 나온 배열의 3번째 숫자는 5입니다.

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한사항

  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.

[입출력 예]

array                               commands                                    return

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

 

[입출력 예 설명]

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

 

 


 

저는 C++, C#위주로 개발을 하는 것이 업무로 한 개발량으로만 볼때는 가장 많았고, C#이 역시 처음 시작을 했던 언어라서 그런지 가장 쉽게 작업을 할 수 있고, UI가 있는 장난감프로그램을 만들기에 가장 편하고 쉬워서 많이 사용을 하고 있습니다만, 이번 프로젝트를 진행하며 시작을 C#으로 하되 다른 언어가 문제풀기에 더 적합하다면 새로운 언어도 기초부터 공부해야겠다는 마음을 갖게 되었습니다.

 

먼저 c#으로 주어진 문제에 대한 답변 코드의 템플릿입니다.

 

 

using System;

public class Solution {
    public int[] solution(int[] array, int[,] commands) {
        int[] answer = new int[] {};
        return answer;
    }
}

 

 

저는 위에서 우선 별 생각없이 작업을 진행했고, 1시간여 고민을 했을 때에는 별 성과없이 아래의 정도 작업이 되었습니다.

 

 

사실 조금 더 되긴 했었는데, 저장이 되지 않아있다 보니,, 우선 대충 이렇게 이중 반복문을 사용하고, 새로운 임시 배열에 commands변수로 받은 시작인덱스부터 끝 인덱스까지의 배열을 만들고 정렬을 하는 부분을 검색하고 있었습니다.

 

우선 이번 문제를 해결하기 위해 새로 배운 것들에 대해서 정리합니다.

 

 

1. C#에서 배열과 List의 전환

 

Array와 List에 대해서는 정말 면접 문제, 시험 문제 할 것 없이 늘 저를 괴롭혀 왔지만, 실제로 아직까지는 업무상의 개발을 할 때 크게 사용할 일이 없었습니다. 그렇기에 해당 내용에 대한 c#언어 문법에 대한 지식도 사용 경험도 전혀 없었지만 필요에 의해 검색을 했고 그 방법을 찾았습니다.

 

 

2. C#에서 오름차순, 내림차순 정렬하기

 

 

 

3. 그 동안의 생각과 코딩에 대한 접근방식

 

인생 명언중 하나로 요즘 자주 떠올리는 말인 '생각하는 데로 살지 않으면, 사는 데로 생각한다.'를 코딩에서도 정말 정확하게 느낄 수 있는 첫째 날이었습니다.

 

코딩을 할 때, 큰 틀을 정하지 않고, 일단 시작부터 하고 보니, 이중 반복문을 왜 쓰고 있고 뭔가 중간중간 놓치고 있는 부분이 생기는 것을 확인했습니다.

 

처음엔 짧게 생각하고 덤볐는데, 틈틈히 하다보니 끊겨서 앞으로 100일간은 Java의 인터페이스 처럼 주석으로 뭔가 크게크게 설계를 해 두고 그 부분을 실제 코드로 채워가는 방법으로 코딩을 해 보려고 합니다.

 

 

+ Recent posts