전체 글 607

[백준] 셀프 넘버

# 1부터 10000까지 배열을 만들어 두고 # for 문을 이용해 1부터 10000까지 돌면서 # hap이 있으면 result에서 지우는 방식으로 푼 방식 # 여기서 잠시 혼동이 왔던 부분 정리하자면 # del은 인덱스를 지우는 방식 # remove는 값을 지우는 방식 result = [i for i in range(1, 10001)] for i in range(1, 10001): hap = i + sum(list(map(int,str(i)))) if hap in result: result.remove(hap) for i in result: print(i) # 처음 접근한 방식 # 1부터 10000까지 돌면서 1부터 해당 숫자 아래의 모든 값을 조사하며 # 해당 숫자의 값이 되는지 확인 하는 코드 # ..

알고리즘 2023.07.26

[백준] 알고리즘 수업 - 알고리즘의 수행 시간 6

# 3개의 반복문이 서로의 값에 대응하며 변하고 있으며 # 예를 들어 n의 값이 7의 경우 # i는 0 ~ 4, j는 1 ~ 5, k = 2 ~ 6까지 실행이 되며 # i가 0, j가 1일때 k는 2,3,4,5,6 로 총 5번 실행이 되는 패턴을 파악하면 # i에 따라 출력되는 횟수는 # 5,4,3,2,1 # 4,3,2,1 # 3,2,1 # 2,1 # 1 # 와 같이 출력을 하기에 아래와 같은 출력 형식을 사용 s = 0 for i in range(1, int(input())-1): s += (i+1)*i//2 print(s, 3) # ===================== # 다만 위의 방식은 효율적이지 못해 다른 사람의 좋은 방식을 찾음 n = int(input()) print(n*(n-1)*(n-2..

알고리즘 2023.07.25

[백준] 알고리즘 수업 - 알고리즘의 수행 시간 4

# 알고리즘의 수행 시간 3과 유사하지만 반복문의 실행이 # 첫 번째 for문에서는 1~ n-1, # 두 번째 for문에서는 i+1 ~ n까지이기에 # 예를 들어 n이 7이라고 한다면 # i가 0일 땐 j는 6번, i가 1일 땐 j는 5번, i가 2일 땐 j는 4번으로 # 6, 5, 4, 3, 2, 1 의 식이 나오기에 아래와 같이 출력을 할 수 있다. n = int(input()) print(n*(n-1)//2, 2)

알고리즘 2023.07.25