코딩도장

Duplicate Numbers

일전에 뭐 게임 회사에서 본 간단한 퀴즈 테스트 입니다.

0~9까지의 문자로 된 숫자를 입력 받았을 때, 이 입력 값이 0~9까지의 숫자가 각각 한 번 씩만 사용된 것인지 확인하는 함수를 구하시오.

  • sample inputs: 0123456789 01234 01234567890 6789012345 012322456789

  • sample outputs: true false false true false

no duplicates
(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
+1 sample output에서 두 번째꺼는 01234니까 0~9사이의 숫자가 각각 하나씩 사용되어서 true 아닌가요?? 아니면.... 0~9까지 모든 숫자가 나와야 하는건가요??? - SPJung, 2015年12月31日 10:44 M D
+1 두 번째 예시는 한 번씩이 아니라 0번 씩 사용된 숫자들이 있으므로 false 입니다. - SungWook Jung, 2017年04月24日 15:17 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

68개의 풀이가 있습니다. 1 / 7 Page

Java 8

public static void main(String[] args){
 System.out.println(isDuplicated(12345678900l));
}
public static boolean isDuplicated(long number){
 String s = String.valueOf(number);
 return s.chars().distinct().count() != s.length();
}
댓글 작성은 로그인이 필요합니다.
이렇게 쉽게 해결 되다니 좋은 코드 감사합니다. - 황 정석, 2016年08月01日 15:12 M D
+1 숫자를 바꿔 돌려봤는데 뭔가 이상하네요! 죄다 true만 반환되는 것 같은데.. - 김지훈, 2018年07月02日 16:16 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

-- java --
public class Duplicate_Numbers {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 System.out.print("0 ~ 9의 문자를 사용하여 입력해주세요: ");
 String[] in = sc.next().split("");
 ArrayList<String> temp = new ArrayList<String>(Arrays.asList(in));
 int sum = 0;
 Collections.sort(temp);
 for (int i = 0; i < temp.size()-1; i++) {
 if (temp.get(i).equals(temp.get(i+1))) {
 sum++;
 break;
 }
 }
 if (sum > 0 || temp.size() != 10) {
 System.out.println("false");
 } else {
 System.out.println("true");
 }
 }
}

2015年10月08日 13:48

Jae Hyunwoo

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

import java.util.*; 
public class Test {
 public static boolean isUnique(String str){
 boolean[] number_set=new boolean[100]; 
 for(int i=0; i<str.length(); i++){
 int val=str.charAt(i);
 if(number_set[val]){
 return false; 
 }
 number_set[val]=true;
 }
 return true;
 }
 public static void main(String[] args) {
 System.out.println("숫자 입력 하세요 ");
 Scanner sc=new Scanner(System.in);
 System.out.println(isUnique(sc.next()));
 }
}

java입니다. charAt 함수 이용해서, 순차적으로 분리합니다 val에 순차적으로 넣습니다. 그다음에 만약에 그 숫자가 이미존재하는거였으면 return false 아니면 number_set배열 해당 인덱스에 true넣습니다 ^^

2015年10月13日 00:42

Kicia Park

댓글 작성은 로그인이 필요합니다.
charAt함수는 char형을 반환합니다. - 이 용준, 2016年04月03日 23:27 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
 public static void main(String[] args) {
 String result = "";
 String[] split = "0123456789 01234 01234567890 6789012345 012322456789".split(" ");
 for(String number : split) {
 result += isDuplicateNumber(number) + " ";
 }
 System.out.println(result);
 }
 private static boolean isDuplicateNumber(String number) {
 List<Character> comparedNumbers = createNumbers("0123456789".toCharArray());
 List<Character> numbers = createNumbers(number.toCharArray());
 Collections.sort(numbers);
 return comparedNumbers.equals(numbers);
 }
 private static List<Character> createNumbers(char[] characters) {
 List<Character> numbers = new ArrayList<Character>();
 for(char character : characters) {
 numbers.add(character);
 }
 return numbers;
 }
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

Java로 작성했습니다. 0부터 9까지 숫자를 각각 하나씩 넣은 크기가 10인 비교용 배열만들고, 입력 받은 값을 한자리씩 끊어서 배열에 넣었습니다. 우선 입력 받은 값을 저장한 배열의 크기가 10이 아니면 false를 출력하게 했습니다. 그 이후, 입력 받은 값을 통해 만든 배열과 비교용 배열을 비교했습니다. 비교 방법은 2중 for루프를 이용하여 입력받은 값과 동일한 비교용 배열값이 있으면 cnt값을 1 증가시키고, 동일한 값을 가지고 있는 비교용 배열의 해당 인덱스를 null처리 했습니다. 그래서 최종적으로 cnt값이 10이면 true를 출력하고 cnt값이 10이 아니면 false를 출력하게 했습니다.

import java.util.Scanner;
public class DuplicateNumbers {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 String[] checkPoint={"0","1","2","3","4","5","6","7","8","9"};
 String[] tmp;
 int cnt=0;
 while(true){
 System.out.print("write number :");
 tmp=sc.next().split("");
 if(tmp.length!=10){
 System.out.println("false");
 continue;
 }
 for(int i=0;i<10;i++){
 for(int j=0;j<10;j++){
 if(tmp[i].equals(checkPoint[j])){
 checkPoint[j]=null;
 cnt++;
 }
 else{
 }
 }//end inner forloop
 }//end outer forloop
 if(cnt==10){
 System.out.println("true"); 
 }
 else{
 System.out.println("false");
 }
 }//end while
 }//end main
}//end class
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

자바입니다.. 입력받은 값의 바이트코드를 비교해서 숫자와 공백문자 이외의 입력을 받을경우 에러를 뱉도록 해놨어요

public static void main(String[] args) throws Exception {
 Scanner scan = new Scanner(System.in);
 String str = scan.nextLine();
 char[] c = str.toCharArray();
 for (char ch : c) {
 if (!((ch >= 48 && ch <= 57) || ch == 32)) {
 throw new Exception("format error");
 }
 }
 String[] str2 = str.split(" ");
 for (int i = 0; i < str2.length; i++) {
 boolean test = true;
 char[] ccc = str2[i].toCharArray();
 for (int j = 1; j < ccc.length; j++) {
 if (ccc[j-1] == ccc[j]) {
 test = false;
 break;
 }
 }
 System.out.print(test + " ");
 }
 }

2016年03月07日 16:16

Hyunwoo Jeon

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
boolean duplicateNumbers(String s) {
 boolean [] flag = new boolean[100]; 
 for(int i=0; i<s.length(); i++) {
 if((s.charAt(i)-'0' > 9 || s.charAt(i)-'0' < 0)) {
 return false;
 }
 if(flag[s.charAt(i)]) {
 return false;
 }
 flag[s.charAt(i)] = true;
 }
 return true;
 }

자바

2016年03月16日 06:58

mozzi

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

자바로 코딩
1. 입력된 String 숫자 만큼 배열 선언 후
2. 각 배열에 숫자 만큼 카운팅
3. 각 배열의 숫자가 1이면 chkCnt 에 증가

 public static void main(String[] args){
 String value = "0123456789";
 String[] ch = value.split("");
 int[] intArray = new int[ch.length];
 int chkCnt = 0;
 for( String cc : ch ){
 int num = Integer.parseInt(cc);
 intArray[num]++;
 }
 for( int number : intArray ){
 System.out.println(number);
 if( number == 1 ){
 ++chkCnt;
 }
 }
 if( chkCnt == 10 ){
 System.out.println("true");
 }else{
 System.out.println("false");
 }
 }

2016年08月01日 14:54

황 정석

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
 String str = "0123456789";
 String result = "";
 Scanner sc = new Scanner(System.in);
 String num= sc.nextLine();
 List<String> list= new ArrayList<String>();
 for(int i=0; i<num.length(); i++)
 list.add((num.substring(i,i+1)));
 Collections.sort(list);
 for(int i=0; i<list.size(); i++)
 result += list.get(i); 
 if(str.equals(result))
 System.out.println("true");
 else
 System.out.println("false");
 }

2016年08月10日 00:18

Oh Tae Gyeoung

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Main {
 public static void main(String[] args) {
 Scanner scan = new Scanner(System.in);
 List<Boolean> list = new ArrayList<>();
 for (int i = 0; i < 5; i++) {
 String numStr = scan.next();
 char[] charArr = numStr.toCharArray();
 int charArrSize = charArr.length;
 Set<Character> filterSet = new HashSet<>();
 for (char n : charArr) {
 filterSet.add(n);
 }
 int filterSetSize = filterSet.size();
 if (filterSetSize == 10 && charArrSize == filterSetSize) {
 list.add(true);
 } else {
 list.add(false);
 }
 }
 for(boolean b : list){
 System.out.print(b + " ");
 }
 }
}

2016年10月27日 22:40

김 수호

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

(注記) 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

no duplicates x 1

언어별 풀이 현황
전 체 x 501
python x 321
java x 68
기 타 x 61
cpp x 16
cs x 13
javascript x 9
objectivec x 5
ruby x 1
php x 3
r x 3
matlab x 1
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

AltStyle によって変換されたページ (->オリジナル) /