Top 24 자바 코딩 테스트 연습 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 자바 코딩 테스트 연습 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.prairiehousefreeman.com team, along with other related topics such as: 자바 코딩 테스트 연습 자바 코딩 연습 사이트, 자바 코딩 연습, 자바 코딩 사이트, 프로그래머스, 코딩테스트 문제, 백준


현직 개발자가 알려드리는 코딩테스트 준비 팁!
현직 개발자가 알려드리는 코딩테스트 준비 팁!


[프로그래머스] [JAVA] 코딩테스트 연습 – 두 개 뽑아서 더하기

  • Article author: dkel.tistory.com
  • Reviews from users: 13866 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [프로그래머스] [JAVA] 코딩테스트 연습 – 두 개 뽑아서 더하기 코딩테스트 연습 – 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 … …
  • Most searched keywords: Whether you are looking for [프로그래머스] [JAVA] 코딩테스트 연습 – 두 개 뽑아서 더하기 코딩테스트 연습 – 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 … 코딩테스트 연습 – 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solut..반갑습니다.
  • Table of Contents:
[프로그래머스] [JAVA] 코딩테스트 연습 – 두 개 뽑아서 더하기

티스토리툴바

[프로그래머스] [JAVA] 코딩테스트 연습 - 두 개 뽑아서 더하기
[프로그래머스] [JAVA] 코딩테스트 연습 – 두 개 뽑아서 더하기

Read More

신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1]

  • Article author: velog.io
  • Reviews from users: 42813 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1] 【 신규 아이디 추천 】 – 프로그래머스 문제풀이 (Java) … 신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1]. …
  • Most searched keywords: Whether you are looking for 신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1] 【 신규 아이디 추천 】 – 프로그래머스 문제풀이 (Java) … 신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1].   【 신규 아이디 추천 】 – 프로그래머스 문제풀이 (Java)
  • Table of Contents:
신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 - Level 1]
신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1]

Read More

코딩테스트 연습 | 프로그래머스 스쿨

  • Article author: school.programmers.co.kr
  • Reviews from users: 40160 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코딩테스트 연습 | 프로그래머스 스쿨 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 … …
  • Most searched keywords: Whether you are looking for 코딩테스트 연습 | 프로그래머스 스쿨 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 … 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!코딩 교육, 코딩, 프로그래밍, 실습, 생활코딩, 알고리즘
  • Table of Contents:
코딩테스트 연습 | 프로그래머스 스쿨
코딩테스트 연습 | 프로그래머스 스쿨

Read More

18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측 / 다른 사람의 풀이

  • Article author: dhdl-it.tistory.com
  • Reviews from users: 25970 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측 / 다른 사람의 풀이 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측. 풀이 Solution { public int solution(long num) { int answer = 0; // num 이 1이 될 … …
  • Most searched keywords: Whether you are looking for 18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측 / 다른 사람의 풀이 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측. 풀이 Solution { public int solution(long num) { int answer = 0; // num 이 1이 될 … 고양이 오이와 함께 살고있는 초보 개발자입니다.
  • Table of Contents:
18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 콜라츠 추측 / 다른 사람의 풀이
18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측 / 다른 사람의 풀이

Read More

[자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] – Nahwasa

  • Article author: nahwasa.com
  • Reviews from users: 4353 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] – Nahwasa [자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] · 그럼 길찾기 처럼 거리를 한번 재보자! · 그럼 이쯤에서 이 문제를 풀 수 있는 아이디어를 찾을 수 … …
  • Most searched keywords: Whether you are looking for [자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] – Nahwasa [자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] · 그럼 길찾기 처럼 거리를 한번 재보자! · 그럼 이쯤에서 이 문제를 풀 수 있는 아이디어를 찾을 수 … 문제 : https://programmers.co.kr/learn/courses/30/lessons/49191 코드 : https://github.com/NaHwaSa/Programmers_OnlineJudge/blob/main/Level%203/%EC%88%9C%EC%9C%84.java 방향 그래프로 표현할 수 있는 문..
  • Table of Contents:

태그

관련글

댓글2

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

[자바] 프로그래머스 - 순위 [코딩테스트 연습 Lv3] - Nahwasa
[자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3] – Nahwasa

Read More

[Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록

  • Article author: deep-dive-dev.tistory.com
  • Reviews from users: 25626 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록 etc/ Coding Test. [Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록. by 돈코츠라멘 2021. 4. 1. …
  • Most searched keywords: Whether you are looking for [Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록 etc/ Coding Test. [Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록. by 돈코츠라멘 2021. 4. 1. 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119..
  • Table of Contents:

관련글

댓글0

최근글

인기글

전체 방문자

태그

티스토리툴바

[Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록” style=”width:100%”><figcaption>[Java] 프로그래머스 > 코딩테스트 연습 > 해시 > 전화번호 목록</figcaption></figure>
<p style=Read More

코딩테스트 연습하기 좋은 사이트 3곳 (Ft. 카카오) : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 17450 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코딩테스트 연습하기 좋은 사이트 3곳 (Ft. 카카오) : 네이버 블로그 그만큼 개발자 취업에 있어 코딩테스트는 중요합니다. ​. 이에 코딩테스트를 연습하기 좋은 사이트들을 … C, C++, 자바, 파이썬을 지원하며. …
  • Most searched keywords: Whether you are looking for 코딩테스트 연습하기 좋은 사이트 3곳 (Ft. 카카오) : 네이버 블로그 그만큼 개발자 취업에 있어 코딩테스트는 중요합니다. ​. 이에 코딩테스트를 연습하기 좋은 사이트들을 … C, C++, 자바, 파이썬을 지원하며.
  • Table of Contents:

카테고리 이동

KG에듀원 상위 1% 교육정보

이 블로그 
IT 공부
 카테고리 글

카테고리

이 블로그 
IT 공부
 카테고리 글

코딩테스트 연습하기 좋은 사이트 3곳 (Ft. 카카오) : 네이버 블로그
코딩테스트 연습하기 좋은 사이트 3곳 (Ft. 카카오) : 네이버 블로그

Read More

프로그래머스 코딩테스트 연습 문제 풀어보기 – Java 자바 – 전화번호 목록

  • Article author: nisne.tistory.com
  • Reviews from users: 36786 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 프로그래머스 코딩테스트 연습 문제 풀어보기 – Java 자바 – 전화번호 목록 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false … …
  • Most searched keywords: Whether you are looking for 프로그래머스 코딩테스트 연습 문제 풀어보기 – Java 자바 – 전화번호 목록 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false … programmers 프로그래머스 코딩테스트 연습 문제 풀어보기 코딩테스트 연습 – 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과..
  • Table of Contents:

태그

관련글

댓글0

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

프로그래머스 코딩테스트 연습 문제 풀어보기 - Java 자바 - 전화번호 목록
프로그래머스 코딩테스트 연습 문제 풀어보기 – Java 자바 – 전화번호 목록

Read More

코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA :: 외계공룡 작업공방

  • Article author: chucoding.tistory.com
  • Reviews from users: 24027 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA :: 외계공룡 작업공방 코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA. 외계공룡 2020. 4. 23. 16:35. 문제 풀이 Solution { public String solution(int n) { String answer … …
  • Most searched keywords: Whether you are looking for 코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA :: 외계공룡 작업공방 코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA. 외계공룡 2020. 4. 23. 16:35. 문제 풀이 Solution { public String solution(int n) { String answer … 문제 풀이 class Solution { public String solution(int n) { String answer = “”; StringBuilder sb = new StringBuilder(); char[] num = {52,49,50}; //4,1,2 while(n > 0){ sb.insert(0,num[n%3]); n = (n -..안녕하세요 춤과 코딩을 사랑하는 외계공룡입니다.
  • Table of Contents:

TAG

관련글 관련글 더보기

인기포스트

티스토리툴바

코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA :: 외계공룡 작업공방
코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA :: 외계공룡 작업공방

Read More

프로그래머스 코딩테스트 연습 Level2 – 방문길이 [ Java ] — 달콘박스

  • Article author: dalconbox.com
  • Reviews from users: 38896 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 프로그래머스 코딩테스트 연습 Level2 – 방문길이 [ Java ] — 달콘박스 코딩테스트 연습 – 방문 길이 programmers.co.kr 같은 길이라면 왼쪽에서 오른쪽 … 때문에 hashset에 양방향을 기록해두도록 합니다. import java.uti. …
  • Most searched keywords: Whether you are looking for 프로그래머스 코딩테스트 연습 Level2 – 방문길이 [ Java ] — 달콘박스 코딩테스트 연습 – 방문 길이 programmers.co.kr 같은 길이라면 왼쪽에서 오른쪽 … 때문에 hashset에 양방향을 기록해두도록 합니다. import java.uti. 코딩테스트 연습 – 방문 길이 programmers.co.kr 같은 길이라면 왼쪽에서 오른쪽으로 이동하던 오른쪽에서 왼쪽으로 이동하던 중복으로 처리하기 때문에 hashset에 양방향을 기록해두도록 합니다. import java.uti..
  • Table of Contents:

블로그 메뉴

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

티스토리툴바

프로그래머스 코딩테스트 연습 Level2 - 방문길이 [ Java ] — 달콘박스
프로그래머스 코딩테스트 연습 Level2 – 방문길이 [ Java ] — 달콘박스

Read More


See more articles in the same category here: https://toplist.prairiehousefreeman.com/blog.

신규 아이디 추천 (자바 Java) : [프로그래머스 코딩테스트 연습 – Level 1]

1. Problem (문제) 📖

(1). 문제 설명 📖

(2). 제한사항 📖

(3). 입출력 예 📖

2. Solution Approach (풀이 접근) 🔑

지정된 7가지 규칙을 순서대로 이행하는 코드를 구현해야 한다.

정규표현식을 활용하면 쉽게 접근할 수 있다. (필자는 첫 풀이때 정규식을 몰랐음)

메인함수와 Sout등으로 디버깅을 해보며 풀어본다.

3. Code (코드) 💻

(1). 내가 처음 작성한 코드 💻

class Problem_002_MySolution001 { public String solution ( String new_id ) { int length = new_id . length ( ) ; String tempAnswer = “” ; String tempAnswer2 = “” ; for ( int i = 0 ; i < length ; i ++ ) { if ( Character . isUpperCase ( new_id . charAt ( i ) ) ) { int temp = ( int ) new_id . charAt ( i ) + 32 ; tempAnswer += ( char ) temp ; } else { tempAnswer += new_id . charAt ( i ) ; } } System . out . println ( "1차테스트 : " + tempAnswer ) ; char [ ] temp = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '-' , '_' , '.' } ; for ( int i = 0 ; i < length ; i ++ ) { if ( Character . isLowerCase ( tempAnswer . charAt ( i ) ) ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } else { for ( int j = 0 ; j < temp . length ; j ++ ) { if ( temp [ j ] == tempAnswer . charAt ( i ) ) { tempAnswer2 += tempAnswer . charAt ( i ) ; break ; } } } } System . out . println ( "2차테스트 : " + tempAnswer2 ) ; tempAnswer = "" ; for ( int i = 0 ; i < tempAnswer2 . length ( ) - 1 ; i ++ ) { if ( tempAnswer2 . charAt ( i ) != tempAnswer2 . charAt ( i + 1 ) ) { tempAnswer += tempAnswer2 . charAt ( i ) ; } if ( i == tempAnswer2 . length ( ) - 2 ) { tempAnswer += tempAnswer2 . charAt ( i + 1 ) ; } } System . out . println ( "3차테스트 : " + tempAnswer ) ; tempAnswer2 = "" ; for ( int i = 0 ; i < tempAnswer . length ( ) ; i ++ ) { if ( i == 0 ) { if ( tempAnswer . charAt ( 0 ) != '.' ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } } else if ( i == tempAnswer . length ( ) - 1 ) { if ( tempAnswer . charAt ( tempAnswer . length ( ) - 1 ) != '.' ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } } else { tempAnswer2 += tempAnswer . charAt ( i ) ; } } System . out . println ( "4차테스트 : " + tempAnswer2 ) ; tempAnswer = "" ; if ( tempAnswer2 == "" ) { tempAnswer2 = "a" ; } tempAnswer = tempAnswer2 ; System . out . println ( "5차테스트 : " + tempAnswer ) ; tempAnswer2 = "" ; if ( tempAnswer . length ( ) > 15 ) { for ( int i = 0 ; i < 15 ; i ++ ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } } else { tempAnswer2 = tempAnswer ; } System . out . println ( "6차테스트 : " + tempAnswer2 ) ; tempAnswer = tempAnswer2 ; tempAnswer2 = "" ; for ( int i = 0 ; i < tempAnswer . length ( ) ; i ++ ) { if ( i == 0 ) { if ( tempAnswer . charAt ( 0 ) != '.' ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } } else if ( i == tempAnswer . length ( ) - 1 ) { if ( tempAnswer . charAt ( tempAnswer . length ( ) - 1 ) != '.' ) { tempAnswer2 += tempAnswer . charAt ( i ) ; } } else { tempAnswer2 += tempAnswer . charAt ( i ) ; } } tempAnswer = "" ; while ( true ) { if ( tempAnswer2 . length ( ) < 3 ) { tempAnswer2 += tempAnswer2 . charAt ( tempAnswer2 . length ( ) - 1 ) ; } else { break ; } } tempAnswer = tempAnswer2 ; System . out . println ( "7차테스트 : " + tempAnswer ) ; String answer = tempAnswer ; return answer ; } } 👶🏻 이 때 이 문제를 풀 때는 '정규표현식'이라는 개념을 아예 모를때였다. 학원에서 주는 문제풀이만 하다가 프로그래머스라는 바다에 던져지니 모르는 것 투성이었다. 👶🏻 문제풀이 시간은 1시간20분이나 걸렸고, 겨우 테스트문제를 통과하여 '제출'을 눌렀더니 결과는 76.9 / 100.0 였다. 즉 오류코드라는 것이다. 정신없이 작성한 코드를 하나하나 뜯어보았지만 엄두가 나지 않았고, 개발자들의 선생님이나 다름없는 '구글'에 자문을 구해보니 "정규표현식"이라는 것이 존재했다. 그것을 공부하고, 문제를 다시 풀어보았다. (2). 공부 후 다시 작성한 코드 💻 public class Problem_002_MySolution02 { public String solution ( String new_id ) { String answer = new_id ; answer = answer . toLowerCase ( ) ; answer = answer . replaceAll ( "[^a-z0-9-_.]" , "" ) ; answer = answer . replaceAll ( "[.]{2,}" , "." ) ; answer = answer . replaceAll ( "^[.]{1}" , "" ) ; answer = answer . replaceAll ( "[.]{1}$" , "" ) ; if ( answer . equals ( "" ) ) answer += "a" ; if ( answer . length ( ) >= 16 ) { answer = answer . substring ( 0 , 15 ) ; } answer = answer . replaceAll ( “[.]{1}$” , “” ) ; while ( answer . length ( ) < 3 ) { answer += answer . charAt ( answer . length ( ) - 1 ) ; } return answer ; } } 👶🏻 훨씬 코드가 깔끔해졌음을 알 수 있다. 물론 오류도 나지 않았고. 100점으로 통과할 수 있었다. (3). 다른 사람이 작성한 코드 💻 💬 다른 사람의 풀이를 보니, 내 풀이와 비슷하였다. 💬 물론 새 클래스를 만들어서 하는 등 여러가지 방법으로 시도한 사람들도 있었으나, 정규표현식이라는 것을 알고 접근하니 이 방법이 제일 깔끔하다는 생각이 들었다. 4. Solution (풀이) 🎲 1. toLowerCase()는 대문자를 소문자로 바꿔주는 코드이다. / (1단계) (반대로 toUpperCase()는 소문자를 대문자로 바꿔주는 코드이다.) 2. replaceAll("A" , "B");는 해당 문자열에서 A를 B로 치환해주는 코드이다. 3. 정규표현식과 replaceAll을 활용하여 문제를 해결한다. / (2~4단계) 4. 공백이 될 경우 a를 추가시켜준다. / (5단계) 5. length로 남은 ID의 길이를 계산해주고, subsrting을 활용하여 문자를 잘라준다. / (6단계) (substring(A, B); 를 활용하는데 A는 해당 인덱스부터를 의미하지만, B는 B를 제외한 인덱스까지를 의미한다.) 6. 그렇게 잘라낸 수의 끝 부분이 마침표(.)일 수 있으니, 4단계를 다시 한 번 해준다. 7. length로 문자열의 길이가 3미만이면, charAt를 활용하여 마지막 문자를 확인하고 추가해준다. 8. 최종적으로 나온 문자열을 return한다. 5. 마무리 😀 - 첫 번째 풀이 시간 : [2021-10-26] 16:50 ~ 18:04 (74분) - 첫 번째 점수 : 76.9 / 100.0 정규표현식을 배운 후 ... - 두 번째 풀이 시간 : [2021-11-18] 09:30 ~ 09:55 (25분) - 두 번째 점수 : 100.0 / 100.0 역시 배움에는 끝이 없다. 하나를 배우면, 새로운 것을 배우고 싶은 욕망이 든다. 그것을 충족시켜주기에 프로그래머스는 너무나도 좋은 사이트이다. 그리고 정규표현식을 공부하기는 하였지만, 다 외우지는 못했다. 다음에는 꼭 다 외워둬야겠다.

18. [JAVA] 프로그래머스 코딩테스트 연습 Level.1

Cucum

https://programmers.co.kr/learn/challenges

프로그래머스 코딩테스트 연습 Level.1 – 콜라츠 추측

풀이

class Solution { public int solution(long num) { int answer = 0; // num 이 1이 될 때까지 반복(while) while(num != 1) { if (num % 2 == 0) { // num이 짝수이면 num /= 2; // 2 나누기 answer++; if (num == 1) { // 이때 num이 1이 되면 break break; } } if (num % 2 != 0) { // num이 홀수이면 num = num * 3 + 1; // 3 곱하고 1 더하기 answer++; if (num == 1) { // 이때 num이 1이 되면 break break; } } if (answer > 500) { // 500 번 반복(answer 값)보다 많아지면 -1 answer = -1; break; } } return answer; } }

(풀이 실패 과정)

class Solution { public int solution(int num) { int answer = 0; while(num != 1) { if (num % 2 == 0) { num /= 2; answer++; if (num == 1) { break; } } if (num % 2 != 0) { num = num * 3 + 1; answer++; if (num == 1) { break; } } if (answer > 500) { answer = -1; break; } } return answer; } }

홀수 -> 짝수 -> 홀수 -> 짝수 형태를 계속 반복하다보면 num이 int 형이기때문에 오버플로우 발생.

-> num을 long으로 변경하거나, long I = (long) num; 이런식으로 형변환을 해주면 됨

다른 사람의 풀이

삼항 연산자로 간단하게 해결

[자바] 프로그래머스 – 순위 [코딩테스트 연습 Lv3]

문제 : https://programmers.co.kr/learn/courses/30/lessons/49191

코드 : https://github.com/NaHwaSa/Programmers_OnlineJudge/blob/main/Level%203/%EC%88%9C%EC%9C%84.java

방향 그래프로 표현할 수 있는 문제의 경우 일단 그래프로 그려보면 답이 보이는 경우가 많다. 따라서 일단 무지성으로 그려봤다.

그럼 길찾기 처럼 거리를 한번 재보자! 정확힌 어디까지 갈 수 있는지만 알 수 있으면 된다.

arr[i][j]를 대해 i번에서 j번까지의 거리라고 생각하고 표를 작성하면 아래와 같다.

그럼 이쯤에서 이 문제를 풀 수 있는 아이디어를 찾을 수 있다. 저기 ‘5’의 경우 4명한테 져서 순위가 확정됬음을 알 수 있다. ‘2’의 경우 자신을 이긴 번호가 3개, 자신이 이긴 번호가 1개이다. 더해보면 4명이다.

즉, [자신이 이긴 번호의 개수 + 자신을 이긴 번호의 개수 = N-1] 이라면 순위를 확정할 수 있는 것이다.

——–

만약 위를 더한게 N이상이라면? 또는 합친게 N-1이긴한데, 이긴 사람의 수와 자길 이긴 사람의 수가 동일한 경우가 있다면(예를들어 2번이 3명을 이기고 1명한테 졌는데, 5번도 3명한테 이기고 1명한테 졌음)? 데이터가 잘못된 경우이다. 하지만 ‘모든 경기 결과에는 모순이 없습니다.’ 조건에 따라 이 부분을 생각하지 않아도 된다.

또한 만약 이 문제에 ‘A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다’라는 조건이 없었다면 이런식으로 풀 수 없다. 이 경우 자신이 이긴 번호의 개수가 N-1개거나, 자신을 이긴 번호의 개수가 N-1 일때만 순위를 알 수 있다. (해당 조건이 없을 경우 1번이 2번 이겼고 2번이 3번을 이겼다고 해서 1번이 3번을 이길 수 있는게 아니므로)

그리고 방향 그래프의 간선을 위 풀이와 반대로 ‘진사람->이긴사람’으로 연결했다 해도 상관없다. 풀이에 변경점은 없다. 아무튼 자기가이긴사람수 + 자길이긴사람수 = N-1명 이면 된다.

——–

다시 풀이로 돌아와서, 자신이 이긴 번호의 개수는 어떻게 알 수 있을까?

이렇게 가로로 보고 도달 가능한 위치라면(거리에 관계없이 도달만 할 수 있다면) 카운팅하면 된다. 당연히 갈 수 있는지만 알면 되므로, 거리정보는 무의미하다.

자신을 이긴 번호의 개수는 그럼 아래와 같이 세로로 보면 될 것임을 알 수 있다.

그럼 세보자.

1 : 이긴사람 3명 + 자길이긴사람 0명 = 3명

2 : 1명 + 3명 = 4명

3 : 2명 + 1명 = 3명

4 : 3명 + 0명 = 3명

5 : 0명 + 4명 = 4명

N=5 이므로, N-1명에 대한 정보가 있어 ‘2’와 ‘5’는 순위를 확정할 수 있다.

최종적으로 저 표를 구할수만 있다면 이제 문제를 풀 수 있게 됬다. 어떻게 저 표를 만들까?

사실 최대 선수의 수가 100명이므로 뭘 써도 된다. 100명 각각에 대해 BFS 돌려도 되고, 마찬가지로 각각에 대해 다익스트라 돌려도 된다. 내 경우엔 O(N^3)이지만 가장 강력하고(한방에 모든 사람으로부터 모든 사람까지의 거리를 구할 수 있음), 구현이 쉬운(대충 3중 반복문 하나면 끝) 플로이드-와샬 알고리즘으로 구현했다. 내 경우엔 그냥 일반 플로이드-와샬 형태처럼 거리를 구했는데 거리 정보는 무의미하므로 그냥 boolean 배열로 돌려도 된다. 코드 기준으로 arr[i][k] && arr[k][j] 라면 k를 경유해서 i에서 j로 갈 수 있음을 활용하면 된다.

So you have finished reading the 자바 코딩 테스트 연습 topic article, if you find this article useful, please share it. Thank you very much. See more: 자바 코딩 연습 사이트, 자바 코딩 연습, 자바 코딩 사이트, 프로그래머스, 코딩테스트 문제, 백준

Leave a Comment