print(ord(input()))
1) 아스키코드
1-1) ord()함수
ord( )
함수의 괄호 안에 문자열을 입력하면 문자에 해당되는 아스키코드를 반환합니다. 괄호안에는 하나만 입력이 가능하니다.2) chr( )함수
chr()
함수는 ord()
함수의 반대 기능을 합니다. 아스키코드에 해당하는 숫자를 입력하면 그에 해당되는 문자열을 출력합니다. N = int(input())
numbers = map(int, input())
print(sum(numbers))
word = input()
alphabet = list(range(97, 123)) #alphabet은 아스키코드 숫자범위를 이용해 [a, b, c, d,...y, z]이다.
for i in alphabet:
print(word.find(chr(i))) #find를 이용해 a,b,c,..들이 어디에 위치하고 있는지 a,b,c,..대신 위치값을 표현하게 된다.
test_case = int(input())
for _ in range(test_case):
R, S = input().split()
for i in S: #ex)S = hello, hello라는 문자열을 i에 넣어 반복해라.
print(i * int(R), end="") #for문을 통해 문자열을 반복하면 각 문자를 분리해 ('h', 'e', 'l', 'l', 'o') 반복한다. 그러므로, i를 처음 문자열로 받은 R을 int를 통해 정수로 바꿔 R만큼 반복해 출력한다.
print() #줄넘김
1) 문자열 반복
*
연산자를 사용하고 전체 문자열을 반복할 횟수를 지정해야 합니다.2) for문의 문자열 반복
iterable
자료형은 문자열도 포함됩니다. 문자열을 iterable
에 입력하면 문자열의 각 문자를 분리해서 변수에 선언합니다.words = input().upper() #입려된 값을 모두 대문자로 바꾼다.
alphabet = list(set(words)) #입력된 값 words에서 기존 단어의 순서는 지켜지지 않지만, set을 이용해 중복된 값을 제거한 후 문자열 하나씩 alphabet 리스트에 넣는다.
cnt_list = []
for i in alphabet: #ex)words = hello, alphabet = ['O', 'E', 'L', 'H']이면, 하나씩 i에 대입해 반복해라.
cnt = words.count(i) #처음에 주어진 값 HELLO에서 각 문자열이 몇개인지 센다. ['O', 'E', 'L', 'H'] -> 1,2,1,1가 cnt이다.
cnt_list.append(cnt) #cnt를 cnt_list에 넣어 list형태로 바꾼다.
if cnt_list.count(max(cnt_list)) > 1: #cnt_list에서 최댓값의 갯수가 1보다 크면(=최댓값이 둘 이상이면)
print('?')
else:
max_index = cnt_list.index(max(cnt_list)) #cnt_list의 최댓값의 위치를 cnt_list에서 어디에 위치하고 있는지 그 위치값이 max_index이다.
print(alphabet[max_index]) #alphabet리스트(['O', 'E', 'L', 'H'])에서 cnt_list의 최댓값의 위치값만큼의 위치에 있는 문자열을 출력해라.
sentence = input().split()
print(len(sentence))
1) .split()와 리스트
index.split()
을 하게 되면 index
에 있는 요소들을 띄워쓰게 하면서 추가로 기존에 문자열이었지만, index
를 리스트형태로 바꿔준다는 사실을 알게 되었습니다. 모양만 같은가해서 리스트에 쓸 수 있는 함수인 .append()(리스트에 내용추가)를 해보았습니다.A, B = map(int, input().split())
fake_A = int(str(A)[::-1])
fake_B = int(str(B)[::-1])
fake_list = [fake_A, fake_B]
print(max(fake_list))
1) [::-1]
alphabet_list = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] #alphabet_lis를 같은 칸에 있는(=돌리는 시간이 같은) 알파벳끼리 하나의 문자열을 만들어 리스트를 작성해 이들의 위치값을 이용해 걸리는 시간을 구할 예정이다.
word = input()
time = 0
for unit in alphabet_list: #alphabet_list에 있는 문자열들을 unit에 대입해 반복해라.
for i in unit: #alphabet_list를 통해 받은 문자열 'ABC', 'DEF', 'GHI',..들을 'A', 'B', 'C'형태로 나눠 i에 대입해 반복해라.
for x in word: #word값을 x에 대입해 반복해라.
if i == x: #i와 x가 같다면
time += alphabet_list.index(unit) + 3 #alphabet_list에 있을 unit('ABC', 'DEF', 'GHI',..)의 위치값에 + 3한 값이 걸리는 시간이다.
print(time)
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
for i in croatia:
word = word.replace(i, '*') #replace를 통해 주어진 단어 word에서 크로아티아 알파벳인 i를 기호 '*'로 변환시키고, 그 값이 word라는 변수에 다시 적용된다.
print(len(word))
#이 문제는 단어가 주어졌을때, 실제로 해당 단어를 크로아티아 알파벳으로 변환시켜주지 않고, 출력해야 하는 건 크로아티아의 갯수라는 점입니다.
문제를 풀기 위해서 입력받는 문자에서 2글자~3글자로 이루어진 8개의 알파벳이 있는 경우, 한 글자로 변환을 하고서 이후에 변환된 문자열의 총 글자 수를 세는 방법으로 코드를 작성했습니다.
1) replace(old, new)
N = int(input())
group_word = 0
for _ in range(N):
word = input()
error = 0 #그룹단어가 아니라면, error에 값이 들어가기 위해 변수 error = 0을 둔다.
for index in range(len(word)-1): #바로 다음 내용에 index를 통한 위치값을 이용해 지정글자와 지정글자 + 1과 같은지 아닌지 비교해야 하기 때문에 index범위를 0에서 입력받은 값인 word의 글자개수 - 1까지 둔다.
if word[index] != word[index+1]: #index=0,1,..word의 글자 개수 - 1까지 이기 때문에 word[0]와 word[1]가 다르면,
new_word = word[index+1:] #word[1]부터 word[0]이후에 글자들은 new_word이다. -> word[0,1..] = word[0] + new_word
if new_word.count(word[index]) > 0: #new_word에서 word[0]의 개수를 셋을 때, 0보다 크면, -> new_word에서 word[0]가 한 글자라도 있다면,
error += 1 #error는 error + 1이다.
if error == 0: #글자 하나씩 대입해 끝까지 해보았을 때, 지정글자와 지정글자가 같거나, 같지 않더라도 같지 않은 순간의 지정글자가 이후에도 없어서 error = 0이라면,
group_word += 1 #group_word는 group_word + 1이다.
print(group_word)
이번 문자열 단계를 풀어보면서 느낀 점은
코딩테스트를 잘 한다는 건 단순히 문제를 보고 해당하는 코딩내용을
리팩토링하면서 짧게 구현해낸다기 보다는,
문제를 수학문제처럼 대하고, 쉽게 풀어갈 수 있는 키포인트(3초풀이와 비슷한)를 찾아내 나름의 공식을 만들어 그 공식의 내용을 코딩하면 자연스레 리팩토링된 답변을 작성할 수 있고, 그것이 코딩테스트를 잘 하는 것이라고 생각된다.