오랜만에 코테 공부를 시작했다. 이번 코테 언어는 자바로 준비하려 했으나.. 자바 인풋 받기부터 실패하여 다시 파이썬으로 돌아왔다😂 짧은 시간 안에 간결한 알고리즘 짜기에는 역시 파이썬이 아니겠냐며..~
프로그래머스와 백준 끌적이다 현대차 공고 준비하여 알게된 현대자동차 그룹 플랫폼 Softeer
프로그래머스나 구름과 비슷한데 아쉬운 점들도 있다. 일단 제출할 때, 수정된 코드가 아닌 이전 제출한 코드로 재제출 된다던지, 제출 했는데 제출 결과에 간헐적으로 안뜬다던지.. 또 제출 후 제출 결과를 확인하는 화면이 따로 있는데, 해당 화면이 아닌 코드 제출 창에서 바로 결과가 나왔으면 하는 바람이 있다. 두 화면의 싱크가 안맞기도 하고 화면을 번갈아가며 내 결과를 확인해야 하는 점이 조금 불편하게 느껴진다. 연습문제 조회 페이지 기능도 조금 아쉽다! 나의 경우, 단계별로 풀어나가는 걸 좋아하는데 아쉽게도 문제 검색 조건과 필터에 난이도가 없다ㅠㅠ 혹시 개발자 크루에 누가 정리해둔게 있을까 싶었는데 없어서 내가 직접 문제집 만들어서 진행 중이다. 열심히 페이지 넘겨가며 레벨1 문제들 찾아서 풀고, 다음엔 레벨2 찾아서 풀고.. 암튼 연습문제가 꽤 있길래 플랫폼에 익숙해질겸, 오랜만에 머리도 좀 굴려볼겸 Softeer 정주행 시작한다 🛫
개발자 크루에 내가 정리중인 문제집이니 참고하실 분들은 한번 봐주시길! https://softeer.ai/class/devcrew/main?id=257
https://softeer.ai/practice/7724
import sys
print("엄마 아빠 사랑해요!")
https://softeer.ai/practice/7698
import sys
T = int(input())
answer = []
for i in range(T):
n = int(input())
n1 = int(n/5)
n2 = int(n%5)
answer.append(("++++"*n1) + " " + ("|"*n2))
for i in range(T):
print(answer[i])
전혀 어려운 문제가 아닌데 이상하게 시간을 쓴 문제.. 처음에는 더하고 나누고 별짓했는데 기준이 되는 수(5) 중심으로 생각하면 간단해진다. 모든 문제든 알맹이 중심으로 간단하게 생각해야할 필요가 있다!
https://softeer.ai/practice/7695
import sys
N = int(input())
answer_x, answer_y = 1001, 1001
for i in range(N):
inputs = input()
x=int(inputs.split(" ")[0])
y=int(inputs.split(" ")[1])
if(y < answer_y) :
answer_y = y
answer_x = x
print(answer_x, answer_y)
가장 남쪽을 찾는 문제임으로, y 좌표만 신경쓰면 된다. 문제 잘 읽기 메모
https://softeer.ai/practice/7626
import sys
n = int(input())
dis = []
points = list(map(int, input().split()))
for i in range(1, len(points)):
dis.append(int(points[i])-int(points[i-1]))
min_dis = min(dis)
print(dis.count(min_dis))
난 파이썬 문제를 풀때 딕셔너리 자료형을 좋아하는 편인데, 특히 키별로 카운트 셀 때 딕셔녀리형을 자주 사용한다. 이것도 그렇게 풀까 하다.. 파이썬은 기본 제공하는 라이브러리가 많기에 그냥 배열로 풀었다.
https://softeer.ai/practice/7368
import sys
dis = list(map(int, input().split()))
a, b, d = dis[0], dis[1], dis[2]
# a초간 뒤를 봄 (이동 가능), b초간 앞을 봄 (이동 불가)
# 터치 후 변경
# a초간 앞을 봄 (이동 불가), b초간 뒤를 봄 (이동 가능)
s = 0
dis = 0
# 첫번째
n1 = int(d/a)
if d/a==1 : n2 = 0
else : n2 = n1
s = (n1*a) + (n2*b) + (d - n1*a) # a만큼 이동, b만큼 휴식, a만큼씩 이동 후 남은 거리
# 터치 후 두번째
m1 = int(d/b)
if d/b == 1: m2 = 0
else : m2 = m1
s += (m1*b) + (m2*a) + (d - m1*b)
print(s)
이 문제도 생각보다 시간을 많이 쓴 문제.. 처음엔 이게 레벨1이라고? 했지만 풀고나니 레벨1이었던 문제..
이거 또한 처음에 반복문 돌려서 더하고 빼고 난리였는데 다른 사람 소스 참고 하다 원리를 깨달았다.
먼저 1초에 거리 1을 간다는 점이 문제를 간단하게 만든다. 어차피 내가 갈 수 있는 시간(거리)은 술래가 뒤돌아있는 동안(a)만으로 정해진 거리 안에 술래가 몇번 뒤돌아있음 되는지(d/a) 계산하면 된다. 그리고 술래가 앞을 보고 있는 시간(b)은 그냥 단순히 더하기만 하면 된다. 여기서 내가 처음 놓친 부분은 한번만 뒤돌아있어도 술래를 터치할 수 있는 경우! 술래가 앞을 보고 있는 시간은 필요 없으니, 그 부분만 예외처리 해주었다.
https://softeer.ai/practice/7353
import sys
from itertools import permutations, combinations
n = int(input())
arr = list(map(int, input().split(" ")))
# 조합
arr_com = list(combinations(arr, 2))
arr_com_sq = []
for i in range(len(arr_com)):
arr_com_sq.append(arr_com[i][0]*arr_com[i][1])
print(max(arr_com_sq))
서로 다른 두 수의 곱 중 최대를 구하는 문제이다. 주어진 수에서 2개를 고르는 모든 경우를 생각해야하기 때문에 난 첫번째로 생각난게 바로 조합이였다. 역시 파이썬이 최고다 하면서 문제를 풀었는데.. 결과는 대실패..
import sys
n = int(input())
arr = list(map(int, input().split(" ")))
arr.sort()
answer = max(arr[0] * arr[1], arr[n-1] * arr[n-2])
print(answer)
구글링해서 찾은 두번째 방법이다. 첫번째 풀이보다 더 효율적인 코드이다. 크기순으로 정렬하여 가장 큰 두 수의 곱을 답으로 내는데, 여기서 기억해야할 점은 음수도 있다는 것이다. 음수의 곱은 양수! 하여 가장 작은 두 수의 곱도 함께 비교해 더 큰 수를 답으로 한다.
근데..... 다른 사람들은 다 이 로직으로 풀었다는데.. 완전 똑같은데.. 난 계속 실패로 뜬다....
첫번째 코드나 두번째 코드나 테스트케이트 15개중에 5개밖에 통과 못하는 중이다. 소프티어.. 여러번 틀리면 테스트케이스 공개 좀 해주세여.. 혹시 아시는 분 계시면 댓글 부탁드림니다.. 이거 계속 파다가 그냥 포기함
내가 참고한 포스팅은 자바 풀이 https://velog.io/@mxnzx/Softeer-%EB%82%98%EB%AC%B4-%EC%8B%AC%EA%B8%B0
https://softeer.ai/practice/6295
import sys
n = int(input())
for i in range(n):
inputs = list(map(int, input().split(" ")))
print("Case #"+str(i+1)+": "+str(inputs[0]+inputs[1]))
https://softeer.ai/practice/6254
import sys
answer= 0
for i in range(5):
times = list(input().split(" "))
t1 = list(times[0].split(":"))
h1, m1 = int(t1[0]), int(t1[1])
t2 = list(times[1].split(":"))
h2, m2 = int(t2[0]), int(t2[1])
if t2[1] < t1[1] :
answer += (60-m1)+m2
answer += (h2-h1-1)*60
else :
answer += (m2-m1)
answer += (h2-h1)*60
print(answer)
코드를 더 짧게 줄이고 싶어 고민 중
https://softeer.ai/practice/6253
import sys
inputs = list(map(int, input().split(" ")))
a, b = inputs[0], inputs[1]
if a==b : print("same")
elif a>b : print("A")
else : print("B")
[Softeer] PYTHON | 연습문제 풀이 Lv2(2) 지동 자동 구축 ~ (0) | 2024.06.30 |
---|---|
[Softeer] PYTHON | 연습문제 풀이 Lv2(1) X marks the Spot ~ 장애물 인식 프로그램 (0) | 2024.06.30 |
[PROGRAMMERS] 그래프탐색 뽀개기 | 파이썬 | 프로그래머스 DFS/BFS 문제풀이 (0) | 2022.03.10 |
[BAEKJOON] 그래프탐색 뽀개기 | 파이썬 | 백준 Lv24. DFS와 BFS 문제풀이 (0) | 2022.03.10 |
[PROGRAMMERS] 탐욕법 뽀개기 | 파이썬 | 프로그래머스 탐욕법(Greedy) 문제풀이 (0) | 2022.03.02 |
댓글 영역