[프로그래머스][Level2][Java] 튜플

2022. 4. 14. 16:19·프로그래머스/Level 2

문제

문제가 길어서 링크로 대체

https://programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

 

 

내 풀이코드

public ArrayList<Integer> solution(String s) {       //튜플
    //문자열에서 {,}이 3개를 다 없애고 가운데에 있는 },{대신에 -을 넣는다.
   s = s.substring(2, s.length() - 2).replace("},{", "-");

    String[] arr = s.split("-");                //-을 중심으로 쪼개서 arr배열에 넣는다.
    Arrays.sort(arr, new Comparator<String>() {       // Comparator을 이용해서 arr배열의 길이를 오름차순으로 배열한다.
        @Override
        public int compare(String o1, String o2) {
            return o1.length() - o2.length();
        }
    });

    ArrayList<Integer> list = new ArrayList<>();      // 답을 담을 list를 생성성
   for (String temp : arr) {                          // 배열 arr의 요소 하나하나를 ,을 기준으로 나누어서 val배열에 담아준다.
        String[] val = temp.split(",");

        for (int i = 0; i < val.length; i++) {        //val배열의 요소가 String형태이기 때문에 Integer형태로 변형시켜준다.
            int num = Integer.valueOf(val[i]);

            if (!list.contains(num)) {                //그리고 중복을 제거하여 차례대로 list에 추가해준다.
                list.add(num);
            }
        }
    }
    return list;
}

우선 처음엔 튜플의 규칙도 잘 이해가 가질 않아서 풀기가 굉장히 막막했다. 그런데 튜플의 규칙을 알고나니 그럭저럭 어떻게 풀어야 할 지 감이 잡히기 시작했다.

우선 튜플의 규칙은 처음에 {2,1,3,4}와 {1,2,4,3}이 같다고 해서 그러면 이 둘 중에 뭐가 튜플인지 어떻게 구분을 하냐라고 생각을 했는데 추가되는 규칙을 보니 튜플 {2,1,3,4}는 2다음 1다음 3다음 4이런 순서로 추가가 되었다. 그래서 튜플에 대한 감이 잡히기 시작하면서 위의 코드와 같이 풀었고 풀이는 주석에 써놨으니 읽으면 쉽게 풀 수 있을 것이다.

저작자표시 비영리 (새창열림)

'프로그래머스 > Level 2' 카테고리의 다른 글

[프로그래머스][Level2][Java] 괄호 변환  (0) 2022.05.17
[프로그래머스][Level2][Java] 위장  (0) 2022.05.17
[프로그래머스][Level2][Java] 짝지어 제거하기  (0) 2022.04.14
[프로그래머스][Level2][Java] 점프와 순간이동  (0) 2022.04.08
[프로그래머스][Level2][Java] 영어 끝말잇기  (0) 2022.04.04
'프로그래머스/Level 2' 카테고리의 다른 글
  • [프로그래머스][Level2][Java] 괄호 변환
  • [프로그래머스][Level2][Java] 위장
  • [프로그래머스][Level2][Java] 짝지어 제거하기
  • [프로그래머스][Level2][Java] 점프와 순간이동
BvrPark
BvrPark
코드 퍼즐과 개발 일상
  • BvrPark
    비버의 개발 일지
    BvrPark
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • JAVA (7)
        • 메서드 외울 것 (2)
      • 프로그래머스 (56)
        • 총 풀이 코드(깃허브) (1)
        • Level 1 (22)
        • Level 2 (33)
      • 백준 알고리즘(단계 별) (16)
        • 총 풀이 코드(깃허브) (1)
        • 1. 입출력과 사칙연산 (2)
        • 2. if 문 (2)
        • 3. for문 (1)
        • 4. while문 (2)
        • 5. 1차원 배열 (3)
        • 6. 함수 (1)
        • 7. 문자열 (1)
        • 8. 기본수학 1 (3)
      • 백준 알고리즘(solved.ac) (9)
        • 총 풀이 코드(깃허브) (1)
        • class2 (8)
      • LeetCode 문제 풀이 (4)
        • 총 풀이 코드(깃허브) (1)
        • Easy (3)
      • 코드업 알고리즘 (7)
      • git과 github사용법 (4)
      • html, css, javaScript (2)
      • 프로젝트 (11)
        • 순수 Java 프로젝트 (2)
        • 쇼핑몰 프로젝트 (2)
        • 게시판 프로젝트 (5)
        • 근태관리 프로젝트 (2)
      • 커피타임 (2)
        • 2023년 (2)
        • 2024년 (0)
  • 블로그 메뉴

    • 링크

      • 포트폴리오
      • 깃허브
    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • Designed By정상우
    BvrPark
    [프로그래머스][Level2][Java] 튜플
    상단으로

    티스토리툴바