TIL27. アルゴリズムベース


2016年


問題の説明
2016年1月1日は金曜日です.2016年a月b日は何曜日ですか?2つの数a,bを入力し,2016年a月b日が曜日である関数を返し,解を完成する.日曜日の名称は日曜日から土曜日までSUN、MON、TUE、WED、THU、FRI、SAT
.たとえば、a=5、b=24の場合は、5月24日が火曜日であるため、文字列「TUE」を返します.
せいげんじょうけん
2016年は閏年です.
2016年a月b日は実在の日です(13月26日または2月45日などの日付は提供されません)
I/O例
a b result
5 24 "TUE"
import datetime
def solution(a,b):
    answer = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
    num = datetime.date(2016,a,b).weekday()
    return answer[num]
******** datetime.date().weekday() 는  월(0)~일(6) 까지 표시해주는 함수 ********

中間文字を入力


問題の説明
単語sの中間文字を返す関数を作成します.単語の長さが偶数の場合は、中間の2文字を返します.
在韓事項
sは、1または100より長い文字列です.
I/O例
"abcde" "c"
"qwer" "we"
def solution(s):
  if len(s) % 2 == 1:
    answer = (s[len(s) // 2])
  else:
    answer = (s[len(s) // 2 - 1] + s[len(s) // 2])
  return answer

私は同じ数字が好きではありません。


問題の説明
配列arr.アレイarrの各要素は、0から9の数字で構成されています.この場合、アレイarrは連続して表示される数字を1つだけ保持し、すべて削除しようとします.ただし、削除後に残数を返す場合は、アレイarr内の要素の順序を維持する必要があります.たとえば、
arr=1,3,3,0,1]の場合、[1,3,0,1]が返される.
arr=[4,4,3]の場合は[4,3]を返します.
配列arrから連続して現れる数字を削除し、残りの数を返すsolution関数を完了してください.
せいげんじょうけん
アレイarrサイズ:1000000以下の自然数
アレイarr内の要素のサイズ:0以上、9以下の整数
I/O例
[1,1,3,3,0,1,1][1,3,0,1]
[4,4,4,3,3][4,3]
def solution(arr): 
    answer = [] 					# 답이 될 빈 배열을 만들어준다.
    count = 0 
    for i in arr: 					# arr 안에 있는 값들을 돌아준다.
        if len(answer) == 0:				# 처음에는 answer 안에 아무 값도 없으므로  
            answer.append(i) 				# 값을 대입해주고 
        if i == answer[count]: 				# answer안에 들어있는 값과 arr 의 값이 같으면  
            continue 					# answer에 넣으면 안되니까 continue 해주고 
        else: 						# arr 배열 안의 값이 answer에 있는 값과 다르면 
            answer.append(i) 				# 그 값을 answer 리스트안에 넣어주고
            count += 1 					# answer[count]가 방금 넣은 값을 가르키도록 count 를 1 올려준다.       
    return answer

ディジタル配列


問題の説明
arrayの各要素で、昇順で配列された配列の係数で区切られた値を返す関数を作成します.
要素が除数で区切られていない場合は、配列に-1を入れて返します.
せいげんじょうけん
arrは自然数を含む配列である.
整数i,jの場合、i≠jの場合、arr[i]≠arr[j]となる.
除数は自然数です.
arrayは長さが1より大きい配列です.
I/O例
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]
def solution(arr, divisor):
    answer = []						# 출력할 답 공백 리스트
    for i in range(len(arr)):				# 입력 받은 배열 길이만큼 for문 실행
        if arr[i] % divisor == 0:			# 그 배열 안에 있는 숫자가 입력받은 수와 딱 맞게 떨어진다면
            answer.append(arr[i])			# answer 리스트에 추가
    if len(answer) == 0:				# 만약 answer 리스트가 0이라면
        answer = [-1]					# answer는 -1 이다.
    return sorted(answer)				# 정렬된 answer 리스트를 출력한다.

2つの整数の合計


問題の説明
2つの整数a,bが与えられると,aとbの間のすべての整数の和の関数を返し,解を完了する.
例えば、a=3、b=5の場合、3+4+5=12であるため、12が返される.
せいげんじょうけん
aとbが同じ場合、どちらの場合も車に戻ることができます.
aおよびbは、−1000000または1000000以下の整数である.
aとbの大きさの関係は不確定である.
I/O例
a b return
3 5 12
3 3 3
5 3 12
  def solution(a, b):
    answer = 0					# answer를 0으로 선언
    for i in range(min(a,b),max(a,b)+1):	# a,b 두개사이의 길이만큼 for문 생성
        answer += i				# answer에 그대로 추가
    return answer

文字列を自分なりに並べる


問題の説明
リスト文字列が文字列で構成され、整数nを有する場合、各文字列のインデックスnのn番目の文字に基づいて昇順にソートしようとします.たとえば、文字列が[「sun」、「bed」、「car」であり、nが1の場合、文字列は各単語インデックス1の文字「u」、「e」、および「a」でソートされます.
せいげんじょうけん
stringは、長さが1以上50未満の配列である.
stringの要素は小文字で構成されています.
stringの要素は、1または100より長い文字列です.
すべての文字列の要素長はnより大きい.
インデックス1に同じ文字列を持つ複数の文字がある場合、前の文字列はアルファベット順に前に並べられます.
I/O例
strings n return
["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]
  def solution(strings, n):
    strings.sort()
    strings.sort(key=lambda x:x[n])
    return strings
グーグル検索

文字列内のpとyの個数


問題の説明
文字列sには大文字と小文字が含まれます.sで「p」と「y」の個数を比較し、「同じものが真であり、異なるものがfalseを返す」ソリューションを完了します.p"もyも存在しない場合、常にTrueが返されます.ただし、数字の比較では大文字と小文字は区別されません.
たとえば、sがpPooyyであればtrue、Pyyであればfalseを返します.
せいげんじょうけん
文字列sの長さ:50未満の自然数
文字列sはアルファベットのみからなる.
I/O例
s answer
"pPoooyY" true
"Pyy" false
def solution(s):    	
    s = list(s)								# 입력받은 s를 리스트로 변환
    if (s.count('p') + s.count('P')) == (s.count('y') + s.count('Y')):	# 대소문자 구분없이 p와 y 갯수가 같다면
        return True							# True 출력
    else:								# 다르다면
        return False							# False 출력

文字列降順


問題の説明
文字列sに現れる文字を大から小まで順番に並べ替え、新しい文字列を返す関数と解決策を完了します.
sは英語の大文字と小文字のみからなり、大文字は小文字より小さいと見なされます.
せいげんじょうけん
strは、長さが1より大きい文字列です.
I/O例
"Zbcdefg" "gfedcbZ"
 def solution(s):			
    s = list(s)				#입력받은 문자열s를 리스트로 변환
    s.sort(reverse = True)		# 내림차순으로 정렬
    return (''.join(s))			# 리스트로 나눠놓은 것을 이어 붙힘

文字列ベース


問題の説明
文字列sの長さが4または6であり、数値のみからなる関数であることを確認し、解を完了してください.たとえば、sがa 234であればFalse、1234であればTrueを返します.
せいげんじょうけん
sは、長さが1より大きく、長さが8より小さい文字列である.
I/O例
"a234" false
"1234" true
 def solution(s):
    return (len(s) == 4 or len(s) == 6) and s.isdigit()	 # 문자길이가 4혹은 6 그리고 전부 숫자면 True 출력

小数点を検索


問題の説明
1から入力した数字nまでの小数を返す関数を作成します.
小数は1とそれ自体の数です.
(1は小数ではありません.)
せいげんじょうけん
nは2以上1000000以下の自然数である.
I/O例
10 4
5 3
def solution(n):
    num= set(range(2,n+1))
    for i in range(2,n+1):
        if i in num:
            num -=set(range(2*i, n+1, i))
    return len(num)