11654
문제 | 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. |
입력 | 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. |
출력 | 입력으로 주어진 글자의 아스키 코드 값을 출력한다. |
답 | asc = input() print(ord(asc)) |
아스키코드를 구하는 함수가 있었던것 같아서 구글링을 해봤다!
역시나 있구만..!!!
ord() 함수가 바로 그것!!
chr() 함수는 그 반대를 계산해준다!
아스키코드에 해당하는 숫자를 입력하면 그 문자열을 출력한다!
ex) ord(0) = 48, chr(4) = 0
11720
문제 | N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. |
입력 | 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. |
출력 | 입력으로 주어진 숫자 N개의 합을 출력한다. |
답 | n = int(input()) a = input() sum = 0 for i in a: sum += int(i) print(sum) |
참 이상하다.... 맞겠지!! 하면 틀리고
이게 맞나? 하면 맞고...ㅋㅋㅋㅋㅋㅋㅋ 이런 매력덩어리 백준자식...
a는 문자다 input()은 문자를 받아오는데 나는 input()에 int()를 안씌워 줬으니까!
for 로 돌리려면 int 이면 못돌리니까 str으로 뒀다!!
예전에 a[i]로 돌리다가 에러가 났었는데...ㅎㅎ 발전한 나의모습^^
sum += i 로 했다가 i가 str이라서
혹시 i에다가 int를 씌워주면 되려나 해서 했더니
너무나 잘되더라... 아싸뵤^^
10809
문제 | 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. |
입력 | 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. |
출력 | 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. |
답 | s = input() alp = list(range(97,123)) # 아스키코드 숫자 범위 for x in alp : print(s.find(chr(x))) |
뭔가 내가 모르는 함수가 사용될 것 같은 강한 느낌을 받아서 구글링을 해봤다
아니나 다를까 나는 find()를 첨봤다!!!
find()를 알아보자면 말그대로 찾는 함수인데
find() 와 index()는 비슷한데 다르다고한다
공통적인 부분으로는 먼저
변수.find(찾을문자) / 변수.index(찾을문자)로 사용하고, 찾을 문자가 처음 위치한 자리의 값을 찾을 수 있다.
시작점과 종료점을 지정할 수 있다.
차이점으로는
find()는 찾는 문자가 없으면 -1을 출력하고, 변수는 문자열만 가능하다.
리스트, 튜플, 딕셔너리자료형은 find 사용할 수 없다. 사용하면 attributeerror 발생!
index()는 찾는 문자가 없으면 valueerror 발생!
문자열, 리스트, 튜플 자료형에서 가능하고 딕셔너리자료형에서는 사용할 수 없다.
이러하니 이번 문제에서는 find를 사용했어야한다!
먼저 s로 input() 값을 받아오고 alp로 영어 소문자 아스키코드값의 범위를 가져오자
왜냐면 chr()로 바꿔서 맞는지 확인할거니까~!
for 문으로 돌리는데
s안에 x값이 있는지 하나하나 돌려서 없으면 -1을 찍고 있으면 그 위치를 찍어주는거다!!
2675
문제 | 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. |
입력 | 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. |
출력 | 각 테스트 케이스에 대해 P를 출력한다. |
답 | t = int(input()) for j in range(t): r, s = input().split() s = str(s).upper() r = int(r) for i in s: print(i*r,end='') print() |
t = int(input())
for j in range(t):
r, s = input().split()
s = str(s).upper()
r = int(r)
for i in s:
print(i*r,end='')
먼저 이렇게 적었었다!
근데 처음은 잘되는데 다음이 에러가 뜬다...!!!!!
ValueError: not enough values to unpack (expected 2, got 0)
이 오류는 unpack하기에 값이 부족하다는 뜻이다
packing : 여러개의 객체를 하나의 객체로 합쳐준다
unpacking : 여러 개의 객체를 포함하고있는 하나의 객체를 풀어준다
결국 변수와 값의 개수가 맞지 않아서 나는 에러라고 한다.
아니 근데 r, s = input().split() 이건 여러개로 받아 줬잖아요ㅠㅜㅜ
왜때문이야 파이썬 정답을 알려줘ㅜㅜㅠㅜㅜㅜㅜ
내가 알려주지
그것은 바로 개행을 안했기 때문....!!!
이것저것 시도해본 결과닷!!!!!
t = int(input())
for j in range(t):
r, s = input().split()
s = str(s).upper()
r = int(r)
for i in s:
print(i*r,end='')
print()
그래서 자세한 이유는 사실 잘 모르겠다..
내일 튜터님한테 여쭤봐야지!!!!!했는데
팀장님한테 여쭤보고 해결ㅎ.ㅎ
저 print()를 안해주면 결과 뜨고 밑에줄에서 입력값을 받는게 아니고
바로 옆에서 입력값을 받아야해서
print()가 있어야 했던것!!!
1157
문제 | 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. |
입력 | 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. |
출력 |
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
|
답 |
count()함수를 사용해보자!
문자열.count(찾을문자)
count()함수는 대소문자를 구분해서 문자열 안에 찾을 문자가 몇개인지 찾아주는 것이다!
문자열을 중복값을 제외하고 리스트에 담아주고 for 로 돌려줘서
문자별로 개수를 세어주고 빈 리스트에 넣어준다음
max 개수가 1개 이상이면 ? 찍고
아니면 index로 max 위치를 잡고, 문자를 찾아준다!
대문자로 출력을 받아야하니 아예 처음부터 input()값을 대문자로 받아주자!
word = input().upper()
그리고 새로운 리스트를 만들어주는데 찾을문자를 돌려주기 위함이니까
중복되는 값이 없도록 set으로 묶어주자.
set_word = list(set(word))
set_word에는 word에 중복값 제외한 문자들이 담겨있는데
이걸 for로 돌려주면서 word에 그 문자들이 몇개씩 있는지
빈 리스트를 만들어서 담아준다
ctn = []
for i in set_word:
num = word.count(i)
ctn.append(num)
그리고 ctn의 최대값을 구해서 그 값이 ctn에 몇개가 있는지 확인하자
1개보다 크면 ?를 찍어주자
if ctn.count(max(ctn))>1:
print("?")
최대값이 1개라면 ctn에서 최대값의 index 위치를 잡자.
ctn에서 최대값의 위치와
set_word에서 최대값의 위치가 같을테니
set_word에서 ctn에서 찾은 최대값의 index를 주고 찾으면 문자가 나오겠지!!!!!
else:
max_index = ctn.index(max(ctn))
print(set_word[max_index])
이러케~~!!!~~~~~~!!~!~!~!~
쏘리질러~~!!~~~~!~!~!!~!~!!~~!~~!!~!
'알고리즘 > 백준' 카테고리의 다른 글
기본수학1 (1712, 2292, 1193, 2869) (0) | 2022.09.13 |
---|---|
문자열(1152, 2908, 5622, 2941, 1316) (1) | 2022.09.11 |
함수(15596, 4673, 1065) (0) | 2022.09.07 |
1차원 배열(10818, 2562, 3052, 1546, 8958, 4344) (0) | 2022.09.06 |
반복문(2438, 2439, 10871, 10952, 10951, 1110) (0) | 2022.09.05 |
댓글