백준 푼 것도 조만간 이어서 올리는 걸로...!
요즘 CS 기초를 다시 다지는 중인데, 학부때는 왜 그렇게 어려워 했을까?
한번 학습할때 이해가 안되서 동기랑 스터디했던 기억이 난다...
한번에 올리는게 더 귀찮네 ㅠㅠ 매일매일 올리자 제발..
0822
SWEA 1928
# 1928. Base64 Decoder (Library 사용 X)
dc = ['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',
'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',
'0','1','2','3','4','5','6','7','8','9','+','/']
tc=int(input())
for tc in range(1,tc+1):
wd=list(input())
res=''
for i in range(len(wd)):
num=dc.index(wd[i]) #1. wd를 숫자로 변환
bit_num=str(bin(num)[2:])
# 2. num을 이진수로 변환 -> 단순 숫자 합이 나오므로 str로 변환 후 앞의 0b 제거
while len(bit_num)<6: # bit_num 길이가 6보다 작으면 앞에 0 붙이기
bit_num='0'+bit_num # str형
res+=bit_num
ans='' # 구하고자 하는 원래 문장
for j in range(len(wd)*6//8): # 글자 길이 *6에서 8bit씩 cut
e=int(res[j*8:j*8+8],2) # 8비트 씩 자른 값을 10진수로 변환
ans+=chr(e) # 아스키코드 값을 ans에 추가
print('#{} {}'.format(tc,ans))
SWEA 1986
# 1986. 지그재그 숫자
tc=int(input())
for t in range(1,tc+1):
n=int(input())
ans=1
for i in range(2,n+1):
if i%2==0:
ans-=i
else:
ans+=i
print("#{}".format(t),end=' ')
print(ans)
0826
SWEA 1948
# 1948 날짜 계산기 - D2
tc= int(input())
for t in range(1,tc+1):
m1,d1,m2,d2=map(int, input().split())
mth={1:31,2:28,3:31,4:30,5:31,6:30,7:31, 8:31, 9:30,10:31,11:30,12:31}
ans=0
for i in range(m1, m2):
if m1==i:
ans+=mth[i]-d1+1
else:
ans+=mth[i]
ans+=d2
print("#{} {}".format(t,ans))
SWEA 1966
# 1966. 숫자를 정렬하자 - D2
tc = int(input())
for t in range(1,tc+1):
n=int(input()) # 5~50
nums=list(map(int,input().split()))
nums.sort()
print("#{}".format(t),end=' ')
for i in range(len(nums)):
print(nums[i],end=' ')
print()
SWEA 1976
# 1976 시각 덧셈 - D2
tc=int(input())
for t in range(1,tc+1):
a,b,c,d=map(int, input().split())
h=a+c
m=b+d
if m>59:
h+=1
m-=60
if h>12:
h-=12
print("#{} {} {}".format(t, h,m))
SWEA 1204 => tc 9 solve (다시 check)
# 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 => Testcase 9 solve
tc = int(input())
for t in range(1,tc+1):
a = int(input())
std_sc=list(map(int, input().split()))
# ct=[0 for c in range(101)]
ct=[0]*101
max_idx=0
for i in std_sc:
ct[i]+=1
max_idx=max(ct)
for j in range(len(ct)):
if ct[j]==max_idx:
if j>max_idx:
max_idx=j
print("#{} {}".format(t, max_idx))
- 현재 에러

0905
SWEA 1989
# 1989. 초심자의 회문 검사 - D2
tc = int(input())
for t in range(1, tc+1):
wd=input()
ans=True
if len(wd)>=3 and len(wd)<=10:
for i in range(len(wd)//2):
if wd[i]!=wd[-1-i]:
ans=False
if ans==False:
print("#{} {}".format(t,0))
else:
print("#{} {}".format(t,1))
SWEA 1959
# 1959. 두 개의 숫자열 - D2
tc= int(input())
for t in range(1,tc+1):
sum=0
total_list = []
a=list(map,int(input().split()))
b=list(map,int(input().split()))
for i in range(len(a)):
for j in range(len(b)):
0912
SWEA 1284
# 1284. 수도 요금 경쟁 D2 Attack
tc=int(input())
for t in range(1, tc+1):
p,q,r,s,w = map(int, input().split())
a=w*p
b=q
if w>r:
b=b+(w-r)*s
print("#{}".format(t),end=' ')
if a>b:
print(b)
elif b>a:
print(a)
SWEA 2001
# 2001. 파리 퇴치 D2
tc=int(input())
result=[]
for t in range(1,tc+1):
n,m=map(int,input().split())
fly =[]
for k in range(n):
nlist=list(map(int,input().split()))
fly.append(nlist) # 파리 갯수
kill=0
for i in range(n-m+1): # 접근 가능한 파리채 행
for j in range(n-m+1): # 열
ans=0
for a in range(m):
for b in range(m):
ans+=fly[i+a][j+b]
if ans>kill:
kill=ans
result.append(kill)
for i in range(t):
print("#{} {}".format((i + 1), result[i]))
0917
SWEA 2007
# 2007. 패턴 마디의 길이 D2
tc=int(input())
for t in range(1, tc+1):
txt=input()
for i in range(1,10): # 마디 최대 길이 11 , 마디수라서 1부터
if txt[:i]==txt[i:i*2]:
print("#{} {}".format(t, i))
break
SWEA 1288
# 1288. 새로운 불면증 치료법 D2
tc=int(input())
for t in range(1, tc+1):
n=input() # 문자열 형태로 입력받기
val=int(n)
data=[0]*10
while True:
for i in range(len(n)):
data[int(n[i])]+=1
if not data.count(0):
print("#{} {}".format(t, n))
break
n=str(val+int(n))
SWEA 1959
# 1959. 두 개의 숫자열 D2
tc=int(input())
for t in range(1, tc+1):
print("#{}".format(t),end=' ')
n,m=map(int, input().split())
A=list(map(int, input().split()))
B=list(map(int, input().split()))
ans=[]
if n>m:
for i in range(0,n-m+1):
tmp=0
for j in range(m):
tmp+=B[j]*A[i+j]
ans.append(tmp)
print(max(ans))
else:
for i in range(0,m-n+1):
tmp=0
for j in range(n):
tmp+=A[j]*B[i+j]
ans.append(tmp)
print(max(ans))
SWEA 1983
# 1983. 조교의 성적 매기기 D2 (맞춤!)
tc=int(input())
for t in range(1, tc+1):
n,k = map(int,input().split())
credit =[] # 학점
grades=['A+', 'A0', 'A-', 'B+', 'B0', 'B-', 'C+', 'C0', 'C-', 'D0']
for i in range(n):
fr,sc,th =map(int, input().split()) # 점수 3개 입력
tsc=(fr*0.35)+(sc*0.45)+(th*0.20)
credit.append(tsc)
kth_sc=credit[k-1] # list는 0부터 count하기 때문
credit.sort(reverse=True)
rk_ten=credit.index(kth_sc)//(n//10)
print("#{} {}".format(t, grades[rk_ten]))'알고리즘 > Algorithm' 카테고리의 다른 글
| SWEA 8~9월 풀이 - 1 (0) | 2022.09.18 |
|---|---|
| baekjoon python 기초 복습.. (0) | 2022.08.09 |
| 바킹독 알고리즘 문제집 - 연결 리스트 (0) | 2022.06.26 |
| 바킹독 알고리즘 문제집 - 배열 (0) | 2022.06.26 |
| SW Academy D1 -2 (0) | 2022.05.26 |