25083번: 새싹

예전 고양이 문제가 생각난다.
이스케이프 문자를 무시하고싶으면 print() 안에 r을 집어넣자.
r은 raw 문자라는 뜻
답:
print(r""" ,r'"7
r`-_ ,' ,/
\. ". L_r'
`~\/
|
|""")
2444번: 별 찍기 -7

10분정도 고민해보고 실패.
고민의 흔적
# 1 1
# 2 3 / 121
# 3 5 / 12321
# 4 7 / 1234321
# 5 9/ 123454321
N = int(input())
for i in range(2*N-1):
print("*")
N = 5라면
00100
03330
55555
03330
00100
2n-1 일때 풀 센텐스
N = int(input()) # 입력 받기
# 위쪽 삼각형 출력
for i in range(1, N+1):
print(" " * (N - i) + "*" * (2 * i - 1))
# 아래쪽 삼각형 출력
for i in range(N-1, 0, -1):
print(" " * (N - i) + "*" * (2 * i - 1))
삼각형을 두개로 나눠서 푸는구나.

공백도 양쪽 생각하지 말고 왼쪽만.
공백은 N-1개
별은 2N-1개.
줄개수는 N개

range 함수를 거꾸로 쓰더라
range(N-1, 0, -1)
N-1 부터 0까지 -1씩하기.
마찬가지로 공백은 N-1개
별은 2N-1개.
줄개수는 N개
다시 이런거 만나면 공백개수 왼쪽만 규칙 파악해보자. 풀 수 있을듯.
1157번: 단어 공부

set() 집합 자료형과 count() 함수와 반복문을 통해서 단어 속 알파벳의 개수를 셀 수 있다.
word = input().upper() # 입력받은 문자열을 대문자로 변환
word_list = list(set(word)) # 입력 문자열의 중복을 제거하고 리스트로 변환
cnt = [] # 문자별 등장 횟수를 저장할 빈 리스트 초기화
for i in word_list:
count = word.count(i)
cnt.append(count)
if cnt.count(max(cnt)) > 1:
print("?")
else:
print(word_list[cnt.index(max(cnt))])
#cnt 중 가장 큰 값의 개수가 1 초과라면, "?" 출력. 언어로 출력하려면 max는 하나여야하기 때문
#리스트.index(값) 은 리스트에서 해당값의 index 값을 출력한다.
어렵네
replace() 함수
replace는 문자열을 변경하는 함수이다. 문자열 안에서 특정 문자를 새로운 문자로 변경하는 기능을 가지고 있다. 사용 방법은 '변수. replace(old, new, [count])' 형식으로 사용한다.
old : 현재 문자열에서 변경하고 싶은 문자
new: 새로 바꿀 문자
count: 변경할 횟수. 횟수는 입력하지 않으면 old의 문자열 전체를 변경한다. 기본값은 전체를 의미하는 count=-1로 지정되어있다.
>>> a = 'hello world'
>>> a.replace('hello','hi')
hi world
1316번: 그룹 단어 체커

그룹단어의 개수를 출력하는 문제.
여기서 정의한 그룹 단어란
풀이
N = int(input())
group_word = N
for i in range(N) :
word = input()
for j in range(len(word)-1) :
if word[j] == word[j+1] : #word의 알파벳이 그 다음 알파벳과 동일하다면, continue
continue
elif word[j] in word[j+1:] :
group_word -= 1
break # 그렇지 않고 알파벳이 그 이후에 알파벳에서 나온다면, 그룹단어가 아니므로 -1 처리.
print(group_word)
알아야 할 요소
슬라이싱

break , continue 문

25206번: 너의 평점은
문제 확인 : https://www.acmicpc.net/problem/25206
(문제가 길어서 사진 첨부 일부 생략)

요약하자면 이렇게 '과목명, 학점, 등급' input 20개 받아서 각 등급에 맞는 점수를 매핑해서 학점과 곱하고 학점의 총합으로 나누어주면 되는 문제.
단, P인 경우에는 성적 취급 X
답 :
rating = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F']
grade = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0]
total = 0 # 학점 총합을 담을 변수
result = 0 # (학점 * 과목평점) 총합을 담을 변수
for _ in range(20) :
s, p, g = input().split()
p = float(p)
if g != 'P' : # 등급이 P인 과목은 계산 안함
total += p
result += p * grade[rating.index(g)]
print('%.6f' % (result / total))
grade[rating.index(g)] #g는 등급
index() 함수를 사용함.
이것은 리스트.index(요소) 의 인덱스 번호를 반환함.
그러니 rating의 요소를 인덱스를 이용하여 grade 리스트의 요소로 치환한 것.
%.6f 는 소숫점 6자리까지 print 하는 스킬.
풀이보니 생각보다 풀만해 보이는데 왜 이 문제만 보면 막막하니 눈이 감겨왔을까.
잊을때 쯤 다시 풀어보자