[프로그래머스 C#] Lv.0 특이한 정렬

2024. 1. 12. 22:48· C#/프로그래머스 코딩 문제 풀이

1. 문제

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.

2. 제한사항

● 1 ≤ n ≤ 10,000
● 1 ≤ numlist의 원소 ≤ 10,000
● 1 ≤ numlist의 길이 ≤ 100
● numlist는 중복된 원소를 갖지 않습니다.

3. 입출력 예시

numlist n result
[1,2,3,4,5,6] 4 [4,5,3,6,2,1]
[10000,20,36,47,40,6,10,7000] 30 [36,40,20,47,10,6,7000,10000]

4. 나의 풀이

public int[] solution(int[] numlist, int n)
{
	int[] answer = new int[numlist.Length];
    
    answer = numlist.OrderBy(x => Math.Abs(n - x)).ThenByDescending(x => x).ToArray();
    
    return answer;
}

// System.Linq; 써줘야 가능한 코드입니다.

// Math.Abs = Math클래스의 Abs, 절댓값을 만들어주는 매서드입니다.

// OrderBy = 오름차순.

// ThenByDescending = 앞에 OrderBy로 오름차순을 진행한 값 기점으로 내림차순.

 

 

 

 

 

 

 

♥ 저 코드 자체를 모른다는 분들을 위한 세상 친절한 설명!!

-입출력 예시 1번을 가지고 설명을 간단히 해드리겠습니다.

1. 현재 괄호속에 있는 x는 numlist의 원소 값들입니다. [1,2,3,4,5,6]

2. 그 아이들을 대충 만든 것처럼 보이는 화살표 모양으로 Math.Abs(n-x)에 넣어주어 절댓값을 출력해줍니다.

3. 그 절댓값을 가지고 Order바이! 오름차순을 진행해줍니다. 이렇게 나오겠죠. [0,1,1,2,2,3] 이 배열의 이름을 귀찮으니까.. 오더바이의 배열.. 줄여서 오빠라고 하겠습니다. 예 그냥 그러려니 하세요.

4. 암튼 이 오빠를 기준으로 Then머시기를 해줄겁니다. 이 때 Then머시기는 x => x로 되어있습니다. 위에서 말했다시피 x는 numlist의 원소 값들입니다.

5. 자 여기서 포인트! 오빠에서 1과1, 2와2는 육안으로 봤을 때 뭐가 어디서 왔는지 알 수가 없죠? 근데 순서에 힌트가 있답니다. numlist 원소들 중 앞에서부터 OrderBy를 진행했다는 거죠. 그러니 앞에 있는게 3 그리고 5. 2 그리고 6이 되는 거랍니다. 

6. 이 데이터베이스를 가지고 내림차순을 진행해준 값이 answer가 되는 겁니다. 참 쉽죠? 전 어려웠답니다ㅎㅎ

 

 

       

 

 

 

'C# > 프로그래머스 코딩 문제 풀이' 카테고리의 다른 글

[프로그래머스 C#] Lv.0 문자 반복 출력하기  (0) 2024.01.17
[프로그래머스 C#] Lv.0 각도기, 양꼬치  (0) 2024.01.17
[프로그래머스 C#] Lv.0 특정문자 제거하기  (0) 2024.01.12
[프로그래머스 C#] Lv.0 직각삼각형 출력하기, 직사각형 넓이 구하기  (2) 2024.01.11
[프로그래머스 C#] Lv.0 옷가게 할인받기, 아이스 아메리카노  (0) 2024.01.11
'C#/프로그래머스 코딩 문제 풀이' 카테고리의 다른 글
  • [프로그래머스 C#] Lv.0 문자 반복 출력하기
  • [프로그래머스 C#] Lv.0 각도기, 양꼬치
  • [프로그래머스 C#] Lv.0 특정문자 제거하기
  • [프로그래머스 C#] Lv.0 직각삼각형 출력하기, 직사각형 넓이 구하기
ForMan_
ForMan_
C# 언어로 프로그래머스 문제를 풀이하고, Unity 엔진으로 게임을 개발하며, 자료구조를 공부하는 과정을 반복문처럼 꾸준히 탐구하고 공유하는 '반복해서 노력하는 남자, ForMan'의 블로그입니다.
ForMan_
반복해서 노력하는 남자, ForMan
ForMan_
전체
오늘
어제
  • 분류 전체보기
    • C#
      • 프로그래머스 코딩 문제 풀이
      • 자료구조 이해하기
      • 알고리즘 기초 익히기
    • Unity
      • Unity 디자인 패턴
      • Unity 타워디펜스게임 프로젝트
      • Unity 물리기반 Merge게임 프로젝트(수박라..
      • Unity FPS게임 프로젝트(오버워치라이크)
    • UI
      • 젠레스존제로 UI작업 시작
      • 젠레스존제로 UI 이펙트 작업
      • 젠레스존제로 UI 사운드 작업
      • 젠레스존제로 UI 스크롤뷰 작업(메뉴창)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

최근 글

최근 댓글

인기 글

태그

  • 오버워치만들기
  • 유니티게임
  • 오름차순
  • Unity
  • 오버워치
  • 유니티게임프로젝트
  • 게임프로젝트
  • 코딩테스트
  • c#
  • 정렬알고리즘
  • 유니티디자인패턴
  • 수박게임
  • forman
  • 완전탐색
  • 과일합치기
  • 유니티
  • 동적프로그래밍
  • 타워디펜스게임
  • 프로그래머스
  • 머쓱이
Thanks for Skin
hELLO · Designed By 정상우.v4.2.2
ForMan_
[프로그래머스 C#] Lv.0 특이한 정렬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.