코딩도장

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
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

9개의 풀이가 있습니다.

Javascript

var isDigitOneUsed = function(str) {
 if (str.length < 10 || str.length > 10)
 return false;
 return isDuplicate(str);
},
isDuplicate = function(str) {
 var usedMap = {};
 for (var i=0; i<str.length; i++) {
 if (usedMap[str[i]]) return false;
 else usedMap[str[i]] = true;
 }
 return true;
};
//test
var input = '0123456789 01234 01234567890 6789012345 012322456789'.split(' ');
for (var i=0; i<input.length; i++)
 console.log(isDigitOneUsed(input[i]))
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

Javascript 입니다.

function check(str){
 var arr = new Array(10),
 num;
 if (str.length !== 10){
 return false;
 }
 for (var i = 0; i < str.length; i++){
 num = parseInt(str.charAt(i));
 if (arr[num]){
 return false;
 }
 arr[num] = true;
 }
 return true;
}
var s = ["0123456789", "01234", "01234567890", "6789012345", "012322456789"];
var i = 0;
while(i < s.length){
 console.dir(check(s[i]));
 i++;
}
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

let arr = [];
let sumFunc = (num) => {
 for(let i = 0; i <= 9; i++){
 let sum = ((num+'').charAt(i))*1;
 if(arr[sum] == null){
 arr[sum] = sum;
 }else{
 return 'false';
 }
 }
 return 'true';
}
console.log(sumFunc(6789012345));

2017年06月13日 21:23

redshark

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

javascript

var once = str => str.split("").sort().join("") === "0123456789";
var input = ["0123456789", "01234", "01234567890", "6789012345", "012322456789"];
for (s of input) {
 console.log(`${s} : ${once(s)}`);
}

2017年06月20日 17:33

funnystyle

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

자바스크립트입니다! 처음에 하나하나 세는식으로 풀다가 다른분들 풀이보고 다시 풀어 보았습니다!!

var input;
var output = 'true';
var _input = new Array();
var seperatedInput = input.split('');
for(var i = 0; i < seperatedInput.length; i++) {
 _input.push(parseInt(seperatedInput[i]));
}
var checkList = new Array();
for(i = 0; i < 10; i++) {
 checkList[i] = 0;
}
if(_input.length != 10) {
 output = 'false';
} else {
 for(i = 0; i < _input.length; i++) {
 checkList[_input[i]]++;
 if(checkList[_input[i]] > 1) {
 output = 'false';
 }
 } 
}
console.log(output);
//다시 만들어보기
var input;
var output = 'true';
var _input = new Array();
var seperatedInput = input.split('');
for(var i = 0; i < seperatedInput.length; i++) {
 _input.push(parseInt(seperatedInput[i]));
}
_input.sort()
var join = _input.join('');
if(_input.length != 10) {
 output = 'false';
} else {
 if(join !== '0123456789') {
 output = 'false';
 }
}
console.log(output);

2018年02月12日 18:32

sangw0804

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

정규식으로 해보았습니다

var regex = /^(?=\d*0)(?=\d*1)(?=\d*2)(?=\d*3)(?=\d*4)(?=\d*5)(?=\d*6)(?=\d*7)(?=\d*8)(?=\d*9)\d{10}$/;
regex.test("0123456789");
regex.test("01234");
regex.test("01234567890");
regex.test("6789012345");
regex.test("012322456789");

2018年03月28日 14:22

무명소졸

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
function checkNum(n){
 let changeIntoString = String(n).split('').sort((a,b) => a > b ? 1: -1).join("");
 let changeIntoNum = Number(changeIntoString)
 if(changeIntoNum === 0123456789) {
 console.log("true");
 } else{
 console.log("false");
 }
 }

2018年05月20日 22:50

채상엽

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
var input = '0123456789 01234 01234567890 6789012345 012322456789';
var list = input.split(' ');
for (var i = 0; i < list.length; i++) {
 var arr = new Array(10);
 arr.fill(0);
 for (var j = 0; j < list[i].length; j++) {
 arr[list[i][j]]++;
 }
 var filter = arr.map(function (a, b) {
 return !(a > 1 || a == 0)
 });
 console.log(filter.indexOf(false) === -1);
}

2019年02月18日 18:19

이계민

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
var compare = [];
var flag = true;
function calc(x) {
 compare = x.toString().split("")
 for(i=0; i<compare.length; i++) {
 for(j=i+1; j<compare.length; j++) {
 if(compare[i] === compare[j]) {
 flag = false; //false면 반복 더 돌릴 필요 없음
 break;
 } 
 }
 }
return flag
}
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

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

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(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 によって変換されたページ (->オリジナル) /