GRIDY

앞으로 이미지 하나씩은 넣어 놓으려고 픽사베이에서 가져옴 ㅋㅋ

 

저번에 구해온 항해99 2주차 알고리즘 이미지를 토대로 링크를 작성했다.

문제 번호 문제 힌트 문제 제목 링크
10869 사칙연산 사칙연산 https://www.acmicpc.net/problem/10869
2588 사칙연산 곱셈 https://www.acmicpc.net/problem/2588
2884 if 문 알람 시계 https://www.acmicpc.net/problem/2884
1110 while 문 더하기 사이클 https://www.acmicpc.net/problem/1110
4344 1차원 배열 평균은 넘겠지 https://www.acmicpc.net/problem/4344
4673 함수 셀프 넘버 https://www.acmicpc.net/problem/4673
1157 문자열 단어 공부 https://www.acmicpc.net/problem/1157
2941 문자열 크로아티아 알파벳 https://www.acmicpc.net/problem/2941
2869 기본수학 1 달팽이는 올라가고 싶다 https://www.acmicpc.net/problem/2869
1929 기본수학 2 소수 구하기 https://www.acmicpc.net/problem/1929
11729 재귀 하노이 탑 이동 순서 https://www.acmicpc.net/problem/11729
11651 정렬 좌표 정렬하기 https://www.acmicpc.net/problem/11651
2805 이분탐색 나무 자르기 https://www.acmicpc.net/problem/2805
4949 스택 균형잡힌 세상 https://www.acmicpc.net/problem/4949
1874 스택 스택 수열 https://www.acmicpc.net/problem/1874
1021 회전하는 큐 https://www.acmicpc.net/problem/1021
2606 DFS와 BFS 바이러스 https://www.acmicpc.net/problem/2606
7576 DFS와 BFS 토마토 https://www.acmicpc.net/problem/7576
1003 동적계획법 피보나치 함수 https://www.acmicpc.net/problem/1003
11053 동적계획법 가장 긴 증가하는 부분 수열 https://www.acmicpc.net/problem/11053

 

 

오늘 풀어볼 문제는 바로

1. 셀프 넘버

함수 문제라고 하던데, 나는 함수를 어떻게 써야 할까 고민해보다가 일단은 내 꼴리는 대로 풀어보기로 했다.

아직 뒤로 14문제가 남았는데 6번째 문제부터 벌써 어떻게 접근해야 할까 고민되기 시작했다.

 

처음에는 숫자 1 부터 하나씩 앞의 수가 있는지 체크하는 방식으로 생각을 해봤는데, 도저히 떠오르는 방법이 없어서 아예 1부터 결과물을 리스트에 저장한 뒤, 숫자 1부터 비교해서 없는 값을 출력하면 되겠다고 생각했다.

 

have_number = [] # 셀프넘버가 아닌 값들
result = 0
for num in range(10000): # 셀프 넘버가 아닌 값들을 찾아보기
result = num
string_num = str(num)
for x in string_num:
result += int(x)
# 61 + 6 + 1 해서 68이 나왔다면 이 68이라는 수는 셀프 넘버가 아닐 것이다
have_number.append(result) # 셀프 넘버가 아닌 값들 저장
for num in range(10000):
# 1부터 10000까지 반복하며 have_number에 이 숫자가 있는지 체크
if num not in have_number:
print(num) # 없는 숫자만 출력

 

일단 이렇게 짜고 통과하긴 했는데 무식한 방법을 쓴 것 같아 약간 찜찜하다.

자료구조나 알고리즘에 대한 학습을 조금 해봐야 할 것 같다! (옛날에 공부 제대로 해보려다 재미없어서 때려쳤다)

나중에 공부하고 나서 좀 수정하는 과정을 거쳐야 겠다.

+ ) 함수를 어떻게 써야 할지 마지막까지도 떠오르지 않았다. 아 몰랑 통과만 하면 장땡이지

 

2. 단어 공부

위의 셀프 넘버보다는 어떻게 접근해야 할지 빠르게 답이 나왔다.

일단 가장 많은 문자를 찾는 것과, 가장 많은 문자가 여러개 일 경우 '?'표시를 하는 것이 관건이었다.

text = input().upper() # 대문자끼리 비교할 것이므로 모든 문자를 대문자로
count = {}
for x in text: # 모든 문자들의 개수를 계산해서 딕셔너리에 저장
if (x in count):
count[x] += 1
else:
count[x] = 1
best_key = ''
best_key_count = 0
for x in count:
# 저장된 문자들의 개수에서 가장 높은 값을 best_key, best_key_count에 저장함
if (best_key_count < count[x]):
best_key = x
best_key_count = count[x]
elif (best_key_count == count[x]):
# 현재 가장 많은 문자와 동일한 개수를 가진 문자가 있을 경우 문자를 '?'으로 변경
best_key = '?'
print(best_key)

 

 

시간적으로는 오래 안걸리긴 했는데 벌써부터 어지러우므로 오늘은 여기까지 하고 알고리즘 책을 한번 읽어보기로 했다.

알고리즘 책 내용은 내일 언급하도록 하겠다!

'Algorithm' 카테고리의 다른 글

알고리즘 문제 풀기 - 3  (0) 2022.04.13
알고리즘 문제 풀기 - 1  (0) 2022.04.11

여기는 제가 공부한것과 제가 기존에 가진 지식을 합하여 강의 자료를 만들어보면서 복습하는 시간을 가지기 위해 만든 카테고리입니다.

아직 초보라서 문제가 많을수도 있으니 이해 부탁드립니다!

사실 아직 한달이나 남아서 항해99에 대한 글을 올릴만한게 많이 없기 때문에 중간중간 내가 어떤걸 공부했고 앞으로 어떻게 나아갈지 정리를 하려고 한다.

먼저, 사전스터디조가 구성되었다.

계획도 어찌저찌 잘 잡혔다. 다들 강의는 열심히 듣고 있는거 같은데 별 소식은 없다.

나는 내일배움카드로 미리 웹개발 종합반을 1회 듣고, 결제하자마자 2회차까지 다 들은지라 남은 1달 동안 회사를 그만 두고 나서 그 동안 푹 쉬느라 하지 못했던 공부를 빡세게 해보려고 했다.

우선, 최우선의 목표는 '노마드코더'사이트의 바닐라 JS 챌린지 강의로 선정했다.

오늘을 기점으로 바닐라 JS 챌린지가 시작되서 이거는 다음 챌린지 일정이다

 

원래 웹퍼블리셔라 js를 얼추 알고는 있지만, 나는 항상 그랬지만 기초가 부족한 편이기 때문에 강의를 한번 쭉 보면서 기초를 다지면 괜찮을 거라고 생각했다. 챌린지가 시작되면 2주동안 퀴즈가 나온다고 한다. 그래서 오늘 처음으로 퀴즈를 풀어보았다.

마지막에는 배운걸로 조건에 부합하는 웹을 하나 만들어서 제출하는거 같다. (이미 배운거 활용해서 미리 만들어두고 있다!)

그리고 바닐라JS와 함께 공부할 후보로 Git과 패스트캠퍼스에서 결제해뒀던 '웹모션디자인' 강의를 보기로 했다.

하루종일 하나만 공부하면 정신 나갈거 같으니 다른거도 섞어서 공부해야겠다고 생각했다.

솔직히 알고리즘도 공부 후보로 생각을 해뒀는데, 인터넷에 검색해본 항해99 2주차 문제들을 보아하니 깊게 공부하지 않고 천천히 해도 될 것 같다. (99일 하루 12시간이라면 충분할듯!)

+ 알고리즘은 그냥 심심할때 한두문제씩 풀어보는 걸로 정했다!

 

2일전을 기점으로 바닐라JS 강의는 모두 다 봤는데, 앞으로는 ES6 공부와 더불어서 리액트를 공부해야 할 것 같다.

근데 리액트 공부하기에 앞서, 사전 스터디 조들이 2회독 완료하기 전까지 지금까지 배운거 다 엮어서 백엔드, 프론트 같이 복습할 겸 개인프로젝트 하나 만들어볼까 한다!

만들만한게 있을지 모르겟네;;

항해99를 대비하여 항해99 2주차의 알고리즘 문제를 검색해보니 나왔다.

그래서 각 문제들을 한번씩 풀어보려고 한다.

언어는 파이썬으로 하기로 했다.

 

출처 : https://leedaeho1188.tistory.com/34

 

항해 99 2주차 알고리즘 [WIL]

2주차 알고리즘 항해99 2주차는 알고리즘을 공부하는 주간이다. 3주차까지 포함하여 총 2주동안 알고리즘에대해서 전혀 몰랐던 사람도 2주 후에는 코딩테스트 시험을 보고 통과 할 수 있도록 만

leedaeho1188.tistory.com

 

 

정리

문제 1. (10869) 사칙연산

https://www.acmicpc.net/problem/10869

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

+ ) 나누기 빼고는 int 할 필요 없는데 귀찮아서 짯던 코드 그대로 올림. 통과만 하면 장땡이니까~

if __name__ == "__main__":
a = input().split()
b = int(a[0])
c = int(a[1])
print(int(b+c))
print(int(b-c))
print(int(b*c))
print(int(b/c))
print(int(b%c))

 

문제 2. (2588) 곱셈

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

if __name__ == "__main__":
a = int(input())
b = input()
print(a * int(b[2]))
print(a * int(b[1]))
print(a * int(b[0]))
print(a * int(b))

 

문제3. (2884) 알람 시계

 

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

상근이 참 힘들게 산다

if __name__ == "__main__":
data = input().split()
h = int(data[0])
m = int(data[1])
if (m >= 45):
m = m - 45
else:
h = h - 1
m = 60 - (45 - m)
if (h == -1):
h = 23
print(h, m)

 

문제4. (1110) 더하기 사이클

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

이때부터는 귀찮아서 메인함수 안씀!

origin_data = input()
after_data = origin_data
count = 0
while(True):
if (len(after_data) < 2):
x = 0
y = int(after_data[0])
else:
x = int(after_data[0])
y = int(after_data[1])
z = x + y
z = str(z)
if (len(z) >= 2):
z = z[1]
after_data = str(y) + str(z)
count += 1
if (int(after_data) == int(origin_data)):
break
print(count)

 

문제5. (4344) 평균은 넘겠지

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

 

# Input Time
num_case = int(input())
data_input = []
for x in range(num_case):
data_input.append(input())
# Run Time
for x in range(num_case):
data = data_input[x].split()
num_students = int(data[0])
num_points = 0
for y in range(1, len(data)):
z = int(data[y])
num_points += z
avg = int(num_points / num_students)
best_students = 0
for y in range(1, len(data)):
z = int(data[y])
if (avg < z):
best_students += 1
percent = best_students / num_students * 100
print(str(format(round(percent, 3), ".3f"))+"%")

 

 

휴 오늘은 여기까지...

 

새로 알게 된 것

round는 반올림 함수.

format은 글자의 포맷을 맞춰준다.

'Algorithm' 카테고리의 다른 글

알고리즘 문제 풀기 - 3  (0) 2022.04.13
알고리즘 문제 풀기 - 2  (0) 2022.04.12

빠르고, 가볍고, 배터리도 오래 가는 노트북

말 그대로 노트북의 이상향이다. M1 맥북이 나오기 전까지는 그런 노트북이 과연 앞으로 나올까? 생각했다.
하지만 M1 맥북이 나오면서 맥북은 기존의 창렬의 이미지를 벗어나 많은 유튜버들이 이제는 맥북에 훌륭한 가성비를 언급한다. (물론 옵션 안 붙였을 때 ㅎㅎ..)

 

나는 원래 천생 윈도우 유저였지만, 옛날부터 맥에 대한 흥미를 가지고 있었다.

윈도우 노트북을 한 4번 갈았는데 도저히 만족하지 못했다.

그 원인들을 꼽자면, (개인의 경험이므로 현재는 개선되었을 수도 있다는 점)

MSI 게이밍 노트북 (80만원) - 무거움, 충전기는 더 무거움, 배터리는 광탈해서 충전기는 필수임. 대학교 다닐 때 들고 다니는데 매일 계단 오를 때 벽돌 실어 나르는 느낌이 들어서 XPS 12로 갈아타게 되었다.

Dell XPS 12 (90만원) - 부족한 성능. 사실 대학 수준의 코딩에는 전혀 문제없이 사용했지만, 입대하기 전에 팔게 되었다.

Asus Vivobook (70만원) - 군대를 전역하고 구매했다. 사실 이건 가성비가 괜찮아서 약간 만족하면서 썼음. 하지만 그램 써보고 싶어서 갈아탐.

LG Gram 360 (130만원) - 내장 그래픽, 발열, 배터리. '가볍다'라는 장점 하나만으로 들고 다니기에는 단점이 많아서 사실 비보북이 더 내 취향에는 맞았던 것 같다. 그리고 가볍게 만들려고 한건 이해하지만 저렴해 보이는 재질도 별로 만족스럽지는 않았다.

Dell XPS 13 (150만원) - 디자인 하나는 되게 만족스러웠는데, 그램이랑 비슷하게 발열이나 가격 대비 만족스럽지 않은 성능으로 팔게 되었다.

 

이렇게 5가지의 노트북을 갈아치우다가 '어차피 개발자가 되면 아이폰 앱 같은 것도 만들 텐데 맥북이나 장만하자'라고 하면서

결국 2년 전에 인텔 맥북을 시작으로 맥북 인생을 시작하게 되었다.

다만 내가 제대로 사용하기 시작한 건 m1 맥북부터이다.

인텔 맥북은 XPS랑 크게 다를 게 없었기 때문이다. (이쁘지만, 부담스러운 발열, 빠른 방전 등)

 

그렇게 애플 행사에서 m1 맥북 발표를 보고 바로 지르고 m1 맥북 에어를 장만하게 되었다.

 

참고로 내 맥북 에어는 165 가량에 구매했고

램 16GB, 애플케어플러스 옵션을 넣었다.

 

아래는 총평가를 정리해보았다.

사실 그냥 장점밖에 없다.

1. 디자인

이건 언급할 필요가 있나 싶다.

기존에도 디자인이 유명하고, 고급스럽다.

2. 성능

성능은 지금까지 사용해본 모든 노트북들보다 우수하다.

맥북 에어라 쿨러가 없어서 게임 같은 거 할 때는 발열이 좀 발생하긴 하는데,

맥을 지원하는 '롤'이 랙 없이 잘 돌아간다.

그리고 지금까지 작업을 하면서 랙 걸려서 불편했던 적이 없었다.

다만, 유니티는 랙이 좀 걸린다. (요즘에는 M1 Pro, Max도 있으므로 3D 그래픽 작업이 필요한 사람들은 프로 모델을 사는 것을 추천한다)

3. 배터리

충전 100% 해놓으면 어지간히 고성능 작업을 해도 5시간 정도는 간다.

맥북 최고의 장점이 아닌가 싶다.

윈도우 노트북은 오래간다 하는 노트북들도 고성능 작업을 하면 1시간반이면 방전되는걸 생각하면 압도적인 차이라고 하지 않을 수 없다.

4. 무게

경량 노트북 중에서는 가벼운 편에 속하는 것 같다.

1.27kg인데 LG 그램 같이 엄청 가볍게 만들어진 모델을 제외하고는 1.27kg보다 가벼운 노트북 자체가 그렇게 많지 않던 걸로 기억한다.

사실 요즘에는 윈도우 노트북에 관심이 별로 없어서 잘 모르겠다.

하지만 배터리가 오래간다는 장점이 무게를 더 가볍게 만드는 게, 밖에서 어지간히 오래 사용할 거 아니면 충전기를 들고 다닐 필요가 없다.

5. 활용도

개발하는 데는 전혀 문제가 없다. 그리고 윈도와 달리 환경 변수니 뭐니 하는게 없어서 훨씬 편하다.

거기다 윈도우 노트북에서는 애플 개발이 불가능 하므로 (물론 플러터 같은걸로 하이브리드 앱 개발은 가능하겟지만 결국 스토어 업로드하려면 맥 제품이 필요하다) 애플 앱과 윈도우 앱, 안드 앱 까지 만들 수 있는 맥북이 개발자의 활용성 측면에서는 더 좋지 않나 싶다.

 

 

이렇게 다 적고 나니까 맥을 너무 빠는 거 같다.

근데 내가 맥북 에어에서 느낀 단점은 적응기간밖에 없다. (물론 다른 사람들은 다른 불편도 느낄수도 있으니 다른 후기들도 찾아보길 바란다.)

키가 윈도우와 아주 많이 다르므로 적응하는데 기간이 좀 걸리고 초기에는 아주 불편하다고 느낀다.

인텔 맥북 일 때는 사실 윈도우 노트북이랑 비슷한 불편함을 가지고 있어서 방치해놓고 거의 사용하지 않았는데,

M1 맥북은 대부분이 장점밖에 없다.

단점이라고 굳이 꼽자면 고성능 작업 시 발열 정도인데, 이것 어차피 쿨러 달린 맥북 프로를 사면 해결되는 문제이다.

 

나는 이 글을 읽는 사람이 아래의 경우에 맥북 에어를 추천한다. (나의 경우를 기준으로)

1. 100~150 사이의 노트북 중에서 가성비 좋은 노트북을 찾고 있다.

2. 디자인이 이쁜 노트북을 찾고 있다.

3. 가벼운 노트북을 찾고 있다.

4. 배터리가 오래가는 노트북을 찾고 있다.

5. 새로운 환경에 대한 적응이 귀찮거나 두렵지 않다.

6. 내가 개발자이거나 디자이너이다.

 

첫 문장에서도 언급했지만 노트북 중에서 가볍고, 배터리 많고, 빠른 노트북은 M1 맥북이 나오기 전까지는 꿈의 노트북이었다고 생각한다.

그래서 본인이 적응만 잘할 수 있다면, 나는 M1 맥북을 강력하게 추천한다.

다만 조만간 M2 맥북에 대한 소식이 나올 수도 있으므로 지금 찾아보고 있는 사람들은 존버 해도 될 것 같다.

5월 7일까지 1달여가 남은 상황... 사전 스터디를 신청하고 노마드코더에서 js를 배우고 Adobe XD도 조금씩 익혀가던 중

항해99를 합격하고 나서, 풀린 강의에 '항해99용 웹개발종합반'이 있는 것을 보았다.

처음에는 어떤 강의가 다를까? 하고 기대하고 봤는데 내용이 크게 다르지 않아 살짝 실망했다.

아마 '왕초보 웹개발종합반' 안 듣고 항해99 신청한 사람들도 있으니까 밸런스는 그대로 놔둔것 같다. (어쩔 수 없지..)

다만 실습이랑 숙제의 내용이 달라졌는데, 그래서 강의는 조금 가볍게 넘기고 실습과 숙제 위주로 강의를 보기로 했다.

 

웹개발종합반에 한해서 개발일지는 안쓰기로 했다.

실습이랑 숙제만 달라서 나머지는 다 같은 내용인데 똑같은 글 포스팅 하는 느낌이 들거 같아서...

 

그래도 [왕초보]가 달려있던 기존 국비지원 '웹개발종합반'보다는 실습과 과제의 난이도가 좀 더 높은거 같다는 느낌이 들었다.

그게 아니라면 내가 1주일만에 뇌가 리셋되서 기억을 제대로 못하는 것일 것이다.

사실 좀 더 높다고 해도 그놈이 그놈이다.

 

2일동안 빠르게 실습과 과제만 하면서 넘겼다.

비슷한 내용이었지만 꽤 재밌게 했던 것 같다.

'일기 > 항해99' 카테고리의 다른 글

항해99 사전준비 / D - 4  (0) 2022.05.05
항해99 사전준비 / D - 18  (0) 2022.04.21
항해99 사전준비 / D - 24  (0) 2022.04.15
항해99 사전준비 / D - 28  (0) 2022.04.11
내가 항해99를 지원한 이유  (0) 2022.04.03

+ Recent posts