함수가 값을 사용할 수 있도록 하되 소유권은 갖지 않도록 하고 싶으면 참조자(Reference)를 사용하면 된다. fn main() { let s1 = String::from("hello"); let len = calculate_length(&s1); println!("The length of '{}' is {}.", s1, len); } fn calculate_length(s: &String) -> usize { s.len() } 위의 코드는 소유권을 넘기는 대신 개체에 대한 참조자를 인자로 사용하는 calculate_length 함수를 정의한 것이다. calculate_length 함수에 &s1을 넘기고, 함수 정의 부분에는 &String을 사용했다. 여기서 사용된 & 기호가 참조자이며, 이는 어떤 ..

모든 프로그램은 실행하는 동안 컴퓨터의 메모리를 사용하는 방법을 관리해야 한다. 러스트는 제 3의 접근법을 이용한다. -> 메모리는 컴파일 타임에 컴파일러가 체크할 규칙들로 구성된 소유권 시스템을 통해 관리된다. 소유권 기능의 어떤 것도 런타임 비용이 발생하지 않는다. 스택과 힙 러스트와 같은 시스템 프로그래밍 언어에서는, 값이 스택에 있는지 힙에 있는지의 여부가 언어의 동작 방식과 우리의 결단에 더 큰 영향을 준다. 스택과 힙 둘 다 코드상에서 런타임에 사용할 수 있는 메모리의 부분이지만, 이들은 각기 다른 방식으로 구조화 되어 있다. 스택은 값을 받아들인 순서대로 값을 저장하고 반대 방향으로 값을 지운다. Last In First Out(LIFO)라고도 부른다. 데이터를 추가하는 것을 pushing ..
https://school.programmers.co.kr/learn/courses/30/lessons/12985?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n,a,b): answer = 0 while True: if a == b: return answer if a % 2 == 1: a = a // 2 + 1 else: a = a // 2 if b % 2 == 1: b = b // 2 + 1 else: b = b // 2 answer += 1 a와 b가 대진을 하는 경우는 a와 b의 몫(2로 나누어..
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 리스트 A에 인덱스 접근을 할 때 연속되어야 하기 때문에 for 반복문으로 bruteforce로 해결하였다. 찾아보니 투 포인터를 사용한 해결 방법도 있었다. (https://jennnn.tistory.com/64) 다양한 해결방법을 아는 것은 문제를 해결하는 시야를 넓혀주기 때문에 문제 접근 방법을 더 생각할 필요가 있는 것 같다 :) # 수들의 합 2 ..
https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 간단한 수학문제다. # 링 import sys, math input = sys.stdin.readline N = int(input()) R = list(map(int, input().split())) for i in range(1, N): value = math.gcd(R[0], R[i]) print(R[0]//value, '/', R[i]//value, sep='')
https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 요즘 자료구조 문제를 많이 푸는 것 같다. 이 문제는 회전하는 큐를 덱으로 구현하는 문제이다. idx라는 변수를 두어 answer에 넣어야 하는 수가 무엇인지 검사하였다. (입력의 num 배열로) 만약 아니라면, 1번 연산을 다시 되돌리고 찾고자 하는 수의 위치를 찾는다. 인덱스가 앞쪽이면 2번 연산을, 뒤쪽이면 3번 연산을 수행한다. 이때 인덱스 비교를 할 때 // 대신 / 를 써야 한다. ..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 리스트로 하면 무조건 시간 초과가 날 것 같았다. 따라서 딕셔너리를 사용하여 해당 카드의 수가 몇 번 나왔는지 value로 저장하였다. 즉, card라는 list에서 10이 3번 나왔으면 {10 : 3} 이렇게 저장되는 것이다. 그리고 만약에 find_number에 일치하는 키가 있다면 값을 출력해주면 되고 만약 없다면 0을 출력한다. 딕셔너리에서 in 연산은 시..
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 처음에는 재귀로 풀었는데 런타임 에러가 떴다. 그래서 재귀를 안 쓰고 푸는 방법을 생각하다가 바로 Q에서 popleft하는 방법이 떠올랐다. 코드도 훨씬 간단해졌다. # 요세푸스 문제 import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) Q = deque([i for i in range(1, N+1)]) answer = [] while Q: for i in ran..
- Total
- Today
- Yesterday
- 10815
- 큐
- 1764
- dp
- 수학
- 1715
- 2805
- 브루트포스
- 11051
- 러스트
- 삼성청년소프트웨어아카데미
- 파이썬
- heapq
- 10816
- 자료구조
- 10845
- 딕셔너리
- 17478
- 프로그래머스
- 스택
- 싸피
- 덱
- 1182
- 조합
- 백준
- 빌림
- 1759
- 1358
- 백트래킹
- 10971
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |