반응형

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.


관련 지식:
1. 리스트에서 특정값의 인덱스 정보 얻기
 : a.index['b'] : 리스트 a 에서 'b'가 위치한 인덱스 값 조회

2. a~z까지의 리스트 바로 구하기
import string
abc=string.ascii_lowercase

내 풀이:

alp = list(input())
alp_list =list('abcdefghijklmnopqrstuvwxyz')
for i in alp_list:
  if i in alp:
    print(alp.index(i), end=' ')
  else:
    print('-1', end=' ')

 

다른 풀이:

S = input()
abc ='abcdefghijklmnopqrstuvwxyz'

for i in abc:
    if i in S:
        print(S.index(i), end= ' ')
    else:
        print( -1, end =' ')

풀이출처: https://gururuglasses.tistory.com/88 

반응형

문제

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.


내 풀이

n = int(input())

count = 0

for num in range(1, n+1):  
  lst=list(map(int, str(num)))
  if num < 100:
    count+=1
  elif lst[0]-lst[1] == lst[1]-lst[2]:
   count+=1
print(count)

- 반복문 돌면서 각 숫자를 리스트 형식으로 변환하여 if문에 적용시킨다
- 1~99 까지는 각 자리수가 등차수열이므로 count에 더해준다.
- 100의자리수 - 10의자리수 == 10의자리수 - 1의자리수 가 성립된다면 각 자리수가 등차관계가 성립하므로 count에 더해준다.

반응형

문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.


알아야 할 정보:

1. round 함수
: round(실수, 반올림하는 자릿수) 로 소수점 관리 가능

a = round(1.23456,0) # 1 출력
b = round(1.23456,1) # 1.0 출력
c = round(1.23456,2) # 1.2 출력
d = round(1.23456,3) # 1.23 출력

2. format 서식지정
:print("{:.nf}".format(number)) 로 number의 소수점 n+1번째 자릿수에서 반올림해서 소수점 n번째 자릿수까지 출력.

print("{:.2f}".format(1.23456)) # 소수점 3번째에서 반올림해서 2번째 자릿수까지만 출력하겠다.

3. '%.?f'로 서식지정
print('%.nf' %number) 로 number의 소수점 n+1번째 자릿수에서 반올림해서 소수점 n번째 자릿수까지 출력함으로써 소수점을 관리할 수 있다

print('%.2f' %0.256) # 소수점 3번째에서 반올림해서 2번째 자릿수까지만 출력하겠다.

 

 

내 풀이

n = int(input())
for _ in range(n):
  total_list =list(map(int, input().split()))
  del total_list[0]
  avg = sum(total_list) / len(total_list) #평균점수 구하기
  
  count = 0  
  #평균 이상 사람수 구하기
  for i in total_list:  
    if i > avg:
      count+=1
  
  #비율 구하기
  print("{:.3f}%".format(count/ len(total_list)*100))

 

다른풀이:

n = int(input())

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1  # 평균 이상인 학생 수
    rate = cnt/nums[0] *100
    print(f'{rate:.3f}%')


풀이출처: https://ooyoung.tistory.com/62

반응형

문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.


내 풀이

n = int(input())
for i in range(n): #받은 수 만큼 반복문 진행
  row = list(input()) #OX 받은 값을 리스트로 변경
  sum = 0 #총합
  a = 1 #최초 더할값, 기본을 1로 설정해준다
  for i in row:       
    if i =='O':
      sum += a
      a += 1
    else:
      a = 1
  print(sum)
반응형

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

============================================================================

알아야할 개념:
리스트에 특정 값이 있는지(없는지) 체크하는 함수

if item in list: 
	print('리스트에 값이 있습니다.') 
else: 
	print('리스트에 값이 없습니다.')
    
    
if item not in list: 
	print('리스트에 값이 없습니다.') 
else: 
	print('리스트에 값이 있습니다.')

내 풀이

l_list=[]

for i in range(10):
  n = int(input())
  left = n % 42
  l_list.append(left)

r_list=[]
for i in l_list:
  if i not in r_list:
    r_list.append(i)

print(len(r_list))

 

+ Recent posts