환상상상속상 2020. 10. 4. 15:22

www.acmicpc.net/step/7

 

문자열 단계

정수를 문자열로 입력받는 문제. Python처럼 정수 크기에 제한이 없다면 상관 없으나, 예제 3은 일반적인 정수 자료형에 담기에 너무 크다는 점에 주목합시다.

www.acmicpc.net

 

1번

input_data = input()
print(ord(input_data))

 

2번

n = int(input())
s = list(map(int,input()))
result = 0
for i in range(n):
    result += s[i]

print(result)

 

3번

alphabet = [-1] * 26
s = input()

count = 0
for c in s:
    idx = ord(c) - ord('a')
    if alphabet[idx] == -1:
        alphabet[idx] = count
    count += 1
    
for a in alphabet:
    print(a, end = ' ')

 

4번

t = int(input())

for i in range(t):
    num, s = input().split()
    test = ''
    for i in s:
        test += int(num) * i
    print(test)

 

5번   count, index, ord, chr

s = input().upper()
alphabet = [-1] * 26
idx = 0

for i in s:
    idx =  ord(i) - ord('A')
    alphabet[idx] += 1

if alphabet.count(max(alphabet)) >= 2:
    print('?')
else:
    print(chr(alphabet.index(max(alphabet)) + ord('A')))
    

 

6번  a[::-1]: 전체를 복사하는데 reverse한다.

a, b = input().split()

a = int(a[::-1])
b = int(b[::-1])

if a > b:
    print(a)
else:
    print(b)

7번

남이 한 코드, list의 index사용

a= input()

alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M',
         'N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

num = [3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10]

count=[]
for i in a:
    ind = alpha.index(i)
    count.append(num[ind])
    
print(sum(count))

내가 한 코드, a.get(c) 키로 value불러오기

#1->2 2->4 즉 숫자를 알면 +1하면된다.

#문자열이 입력됐을때 숫자로 구분해야함

a = {'A': 2 , 'B': 2, 'C': 2, 'D': 3, 'E': 3,'F': 3,
   'G': 4 ,'H': 4 ,'I': 4 ,'J': 5 ,'K': 5 ,'L': 5 ,
    'M': 6 ,'N': 6 ,'O': 6 ,'P': 7 ,'Q': 7 ,
    'R': 7 ,'S': 7 ,'T': 8 ,'U': 8 ,'V': 8 ,
    'W': 9 ,'X': 9 ,'Y': 9 ,'Z': 9 ,}

s = input()

sum = 0
for c in s:
    sum += a.get(c) + 1
print(sum)

8번

그룹단어체커

실패.

def check_group(s):
    result = True
    for c in s:
        idx = s.index(c)
        b = s[idx + 1:]
        print(b)
        print(b.find(c))
        if b.find(c) == -1:
            continue
        if 0 != b.find(c):
            result = False
            break
    return result

count = 0
n = int(input())

for i in range(n):
    s = input()
    if check_group(s):
        count += 1
        
print(count)

타인의 코드 

배울 점: arr에 저장을 해두고 확인 할 수 있다니 천재다 이자식

즉, 이전에 'a'문자가 있었는데... 그럼 바로전에 있어야하잖아 그걸이용

n = int(input())
answer = 0 

for case in range(n):
    string = input()
    arr = []
    flag = True
    
    for i in range(len(string)):
        if string[i] in arr:
            if string[i - 1] != string[i]:
                flag = False
                break
        else:
            arr.append(string[i])
    if flag:
        answer += 1
        
print(answer)