오늘 공부한 내용
☁️
python3 chapter2
[콘솔 출력]
콘솔: 컴퓨터와 소통하는 창
[변수의 선언과 초기화]
변수: 특정한 형식을 가진 값을 저장하는 공간
int x = 2 (int: 자료형 / x: 변수명 / 2: 변수값)
자료형: 변수가 가지는 특정 형식
변수명: 변수의 이름
변수값: 변수에 저장한 값
변수를 생성한다 = 변수를 선언한다
변수 초기화 = 새로 생성된 변수에 처음 값을 입력한다
파이썬은 c언어와 같이 자료형을 직접 작성할 필요 없이 변수와 변수값만 있어도 코드가 정상 실행된다.
→ 파이선은 자료형을 자동으로 추론하기 때문
a = 10
b = 10.5
print(a, b)
a, b = 10, 30
print(a, b)
a = 10
b = 30
print(a, b)
# 이 세가지 경우 모두 가능하다는 것
숫자 이외에 다른 자료형도 가능하다
b는 문자열 처리되었다 → “”는 문자열을 표현하기 위한 장치
변수는 변수로 초기화 가능 → d는 b로 초기화되어 “2023”을 출력
연산을 포함해 초기화 가능 → result는 a + b의 결과로 초기화, +를 이용해 연산할때는 같은 자료형만 가능
변수안에 저장된 변수값은 동일한 자료형의 다른 값으로 변경해 사용 가능 → c의 값 230528에서 228로 변경
🫠(개인공부)
컴퓨터알고리즘
#include <stdio.h>
#include <string.h>
#define N 8 // 도시의 개수
#define INF 999 // 무한대 값
char cityNames[N][10] = { "서울", "원주", "천안", "강릉", "대구", "포항", "부산", "광주" }; // 도시 이름 배열
int D[N][N]; // 최단 거리 배열
int Path[N][N]; // 최단 경로 배열
void print_path(int i, int j);
int main() {
int i, j, k, tmp;
// 초기화
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
D[i][j] = (i == j) ? 0 : INF; // 자기 자신으로 가는 거리는 0, 나머지는 무한대로 초기화
Path[i][j] = -1; // 최단 경로 배열 초기화
}
}
// 데이터 입력
D[0][1] = 15; // 서울 -> 원주
D[0][2] = 12; // 서울 -> 천안
D[1][3] = 21; // 원주 -> 강릉
D[1][4] = 7; // 원주 -> 대구
D[4][5] = 19; // 대구 -> 포항
D[4][6] = 9; // 대구 -> 부산
D[5][6] = 5; // 포항 -> 부산
D[3][6] = 15; // 강릉 -> 부산
D[2][7] = 10; // 천안 -> 대전
D[2][8] = 4; // 천안 -> 논산
D[8][7] = 3; // 논산 -> 대전
D[7][9] = 10; // 대전 -> 대구
// Floyd 알고리즘 적용
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
Path[i][j] = (D[i][j] != INF) ? j : -1; // 경로 초기화
}
}
for (k = 0; k < N; k++) {
for (i = 0; i < N; i++) {
if (i == k) continue;
for (j = 0; j < N; j++) {
if (j == k || j == i) continue;
if (D[i][k] == INF || D[k][j] == INF) continue;
if ((tmp = D[i][k] + D[k][j]) < D[i][j]) {
D[i][j] = tmp; // 최단 거리 갱신
Path[i][j] = k; // 최단 경로 업데이트
}
}
}
printf("=======%d=======\n", k + 1);
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf((D[i][j] >= INF) ? "INF " : "%3d ", D[i][j]); // 최단 거리 출력
}
printf("\n");
}
}
printf("=====================\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (i != j) {
print_path(i, j); // 최단 경로 출력
}
}
}
return 0;
}
void print_path(int i, int j) {
if (Path[i][j] == -1 || i == j) {
return; // 경로가 없거나 출발 도시와 도착 도시가 같으면 종료
}
printf("%3d : %s", D[i][j], cityNames[i]); // 최단 거리와 출발 도시 출력
while (i != j) {
i = Path[i][j]; // 다음 경유지로 이동
printf("-> %s", cityNames[i]); // 경유지 출력
}
printf("\n");
}
'구름 풀스택 1기 9oormthon training > 첫번째스터디 - GeepHub' 카테고리의 다른 글
[2주차] TIL - 230529 (0) | 2023.08.23 |
---|---|
[2주차] TIL - 230528 (0) | 2023.08.23 |
[1주차] TIL - 230526 (0) | 2023.08.22 |
[Conflict - Merge] 운영체제의 Mutex, 우선순위 스케줄링과 Busy Waiting의 상관관계 (0) | 2023.08.22 |
[Conflict - Merge] java Scanner와 BufferedReader (0) | 2023.08.22 |