일전에 뭐 게임 회사에서 본 간단한 퀴즈 테스트 입니다.
0~9까지의 문자로 된 숫자를 입력 받았을 때, 이 입력 값이 0~9까지의 숫자가 각각 한 번 씩만 사용된 것인지 확인하는 함수를 구하시오.
sample inputs: 0123456789 01234 01234567890 6789012345 012322456789
sample outputs: true false false true false
def check_duplicate(num):
if len(num) == len(set(num)) == 10:
return True
return False
#num = input()
num = ['0123456789','01234','01234567890','6789012345','012322456789']
for i in num:
print(check_duplicate(i))
딕셔너리 사용해서 카운트하는걸로 작성했다가 set을 이용하는 것을 보고 lv1도 제겐 높은 수준임을 느끼고 갑니다 ᅮᅮ
a = list(input("0~9까지 숫자를 한번씩 입력하시오 :"))
print ("True" if '0123456789' == "".join(sorted(a)) else "False")
2021年12月03日 13:27
def Check(s):
a = []
for i in range(10):
a.append(0);
for c in s :
if c not in str( range(10) ) :
return False
a[int(c)]+=1
for i in range(10):
if ( a[i] != 1 ) :
return False
return True
s = "0123456789 01234 01234567890 6789012345 012322456789"
for s1 in s.split() :
print Check(s1) and "true" or "false" ,
2015年09月16日 10:45
C#
private bool checkCount(string test)
{
char[] array = test.ToCharArray();
int max =
(from t in array
group t by t into g
select g.Count()).Max();
return max > 1 ? false : true;
}
2015年09月16日 11:47
import math
str_inputVal=input("input :")
num_inputTrans=int(str_inputVal)
#자리수 계산용 코드
num_digit=int(math.log10(num_inputTrans))+1
set_mem=set()
for i in range(num_digit):
set_mem.add(num_inputTrans%10)
num_inputTrans=int(num_inputTrans/10)
if set_mem.__len__()==10:
print("입력된 값에는 0~9까지 모두 있습니다.")
else:
print("입력된 값에는 0~9 중 "+str(10-set_mem.__len__())+"개가 부족합니다.")
윗 분과 같이 set은 중복을 허용치 않는다는 것을 이용하여 제작하였습니다.
중간의 math.log10()부분은 입력받은 수의 자릿수를 구하기 위해 만든 부분입니다.
자릿수를 이용해서 for문으로 회전시켜 각 자릿수를 set 에 저장한 후 set의 크기를 이용해서 빠진 숫자가 있는지 확인하는 방식입니다.
참고로 이 방법에서 string으로 받은 문자열을 integer로 변환하는 과정이 있어 0으로 시작할 경우에는 0을 제외하게 됩니다. 만약 제일 처음 0을 무시하게 하고싶지 않다면 인풋을 받은 후 바로 앞이 "0"인지 확인하고 그후 set에 0을 집어넣으면 됩니다. 만약 0이 앞부분에 2개 이상이더라도 이 문제는 중복을 확인하는 문제임으로 무시해도 상관없다 생각합니다.
2015年09月16日 23:14
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]))
2015年09月17日 23:32
풀이 작성