가이버2
개발 블로그
가이버2
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 교육 (115)
      • 백엔드 (14)
      • 프론트 (2)
      • 네트워크 관련 (4)
      • 데이터 관련 (3)
      • devops (3)
      • 그외 (3)
      • 알고리즘 (5)
      • 코테 (81)
    • 디버깅 (3)
      • 스프링 Data JPA (3)
      • JAVA (0)
    • 개발 편의 (8)
    • 기계 (25)
      • NAS (10)
      • ROUTER (0)
      • 맥북 (15)
    • 소프트웨어 (17)
      • WIN (4)
      • MAC (13)
      • LINUX (0)
    • 생활 (0)
      • 구매 (0)
      • 오월이 (0)
    • 링크 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • naelonambul 개발 블로그 입니다.

인기 글

태그

  • 가상화
  • 윈도우
  • intellij
  • Java
  • 맥
  • 맥북
  • Spring
  • 스프링
  • 인프런
  • SSD
  • 코딩테스트
  • 프로그래머스
  • JS
  • M1
  • 시놀로지
  • ARM
  • SQL
  • M4
  • 맥미니
  • WSL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
가이버2

개발 블로그

교육/코테

[프로그래머스]JAVA 가장 큰 수 -정렬

2022. 7. 7. 13:50

참고 : 너무 복잡하게 생각하지말자(두수가 자리수가 다르면 그냥 뒤에 붙이면 된다.최적화 할꺼면 다른쪽 1개씩만 추가하고 비교해도 될듯) 

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42746

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

public class Solution {
        public String solution(int[] numbers) {
            String answer = "";

            //초기값 세팅
            List<Integer> lists = new ArrayList<>();
            for (int number : numbers) {
                lists.add(number);
            }

            //정렬
            Collections.sort(lists, new SortByRoll());

            //앞부분 0 제거
            Iterator<Integer> iterator = lists.iterator();
            while (iterator.hasNext()){
              Integer next = iterator.next();
              if(next == 0) iterator.remove();
              else break;
            }

            //숫자 문자 치환
            StringBuffer sb = new StringBuffer();
            for (Integer list : lists) {
                sb.append(list);
            }
            //답 출력, 문자 없을시 대체
            answer = sb.length() > 0 ? sb.toString() : "0";

            return answer;
        }

        //앞문자 비교
        public class SortByRoll implements Comparator<Integer>{
            public int compare(Integer f, Integer s){
                Integer fNum = getNum(f);
                Integer sNum = getNum(s);
                return sNum - fNum == 0 ? compNums(f, s) : sNum - fNum;
            }
        }

        //앞문자 같을시 서로 뒤에 추가후 크기 비교.
        private Integer compNums(Integer first, Integer second){
          StringBuffer fsb = new StringBuffer(String.valueOf(first));
          StringBuffer ssb = new StringBuffer(String.valueOf(second));
          String fs = new StringBuffer(fsb).append(ssb).toString();
          String ss = new StringBuffer(ssb).append(fsb).toString();
          Integer fI = Integer.valueOf(fs);
          Integer sI = Integer.valueOf(ss);
          return sI - fI;
        }

        //앞 숫자 추출
        private Integer getNum(Integer value) {
            String sString = String.valueOf(value);
            return Integer.valueOf(sString.charAt(0));
        }
}

'교육 > 코테' 카테고리의 다른 글

[프로그래머스]JAVA 소수찾기 -완전 탐색  (0) 2022.07.07
[프로그래머스]JAVA H-Index -정렬  (0) 2022.07.07
[프로그래머스]JAVA 이중우선순위큐 -힙  (0) 2022.07.07
[프로그래머스]JAVA 디스크 컨트롤러 -힙  (0) 2022.07.07
[프로그래머스]JAVA 주식가격 -스택/큐  (1) 2022.07.06
    '교육/코테' 카테고리의 다른 글
    • [프로그래머스]JAVA 소수찾기 -완전 탐색
    • [프로그래머스]JAVA H-Index -정렬
    • [프로그래머스]JAVA 이중우선순위큐 -힙
    • [프로그래머스]JAVA 디스크 컨트롤러 -힙
    가이버2
    가이버2
    개인 개발 블로그 입니다.

    티스토리툴바