Programming Language
[C++] 파일 입출력 - dfs [2]
저번 글에 이어 이번 글에서는 그래프를 읽어온 결과를 바탕으로 그래프 상에서 dfs를 해보겠다. 0. 그래프 구조 먼저, 저번 글에서 사용한 그래프 구조를 직접 그리면 다음과 같다. 1. dfs 코드 dfs는 Depth-First-Search의 약자로 현재 정점에서 다음 정점으로 갈 수 있는 경우, 탐색을 계속하며 다음 정점이 없는 경우에는 부모 정점으로 돌아가 다시 갈 수 있는 정점가 있는지 판단한다. 다음 정점이 있는 경우 계속해서 탐색을 하기 때문에 트리에서 탐색할 경우, 루트 노드에서 계속해서 높이를 내려가면서 탐색을 하므로 dfs라는 이름이 붙었다. 코드 전반은 다음과 같다. int dfs(vector &graph, vector& visited, int n){ cout
[C++] 파일 입출력 - 텍스트 파일 읽기 [1]
이 글에서는 fstream 라이브러리를 이용한(C++11 이상 버전 권장, 버퍼 객체 bool 타입으로 변환 가능해서) 파일 입출력 예제를 다뤄보겠다. 수업에서 배운 dfs, bfs, 다익스트라 알고리즘 등을 복습할 겸 C++로 코드를 짜보았다. 1. include 먼저 기본 입출력에 필요한 iostream, 그래프 정보를 저장하는 데 쓸 이차원 배열을 동적으로 생성하기 위한 vector, 파일 입출력을 위한 fstream 라이브러리를 include 해온다. #include #include #include using namespace std; *std 네임스페이스를 미리 선언했다. 이렇게 되면 원래는 std::fstream 형인 fstream을 그냥 fstream으로 사용할 수 있다. 2. 변수들과 파일..
[JAVA] eclipse swing 모듈 설정
자바에서 스윙 라이브러리를 사용하려고 다음과 같이 import시 오류가 나는 상황이 있었을 것이다. import javax.swing.*; 이때, java 11 이후로는 java.base 모듈만 기본으로 포함하므로, 그 이외의 다른 모듈들을 사용하기 위해서는 따로 불러오기가 필요하다. 따라서 module-info.java 파일에 다음과 같이 작성해준다. module { requires java.desktop; } 예시) 참고 블로그 : https://daily-life-of-bsh.tistory.com/129
[Quick Note] swap 함수를 구현하는 세 가지 방법 (C++)
1. 변수 한 개를 추가로 생성한다. void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp; return; } 2. xor 연산을 사용한다. void swap(int *a, int *b){ *a ^= *b; *b ^= *a; *a ^= *b; return; } 3. 덧셈 연산을 사용한다. void swap(int *a, int *b){ *a = *a + *b; *b = *a - *b; *a = *a - *b; return; } // 또는 더 간단하게 void swap(int *a, int *b){ *a += *b; *b = *a - *b; *a -= *b; return; } 1. 방법은 간편하지만 추가로 변수를 생성해야 한다는 단점이 존재하고 (메모리 ..
[C++] list 자료형 사용하기 - Quick Note
** 주의 PS를 할 때 C++에서 list 자료형은 인덱싱을 할 수 없다는 치명적인 결함 때문에 거의 쓰이지 않습니다. 이 글에서는 list 자료형을 사용할 수 있는 방법을 소개했지만, PS를 할 때는 다른 라이브러리를 사용하는 것을 추천드립니다. 1. 개요 알고리즘을 풀 때 만약 요소를 순서대로 조회하면서 인덱싱을 하려면 std::vector 라이브러리나 std::deque, std::map (포인터로 iterator 생성가능) 등의 자료형을 사용할 것이다. 하지만 만약 시퀀스 중간에서 삽입, 삭제가 일어나야 할 경우, 위에 나온 자료형 모두 사용하기가 애매해진다. (map은 확인 필요) - 특히, std::vector는 push_back, pop_back 등의 메소드는 amortized O(1)로 ..
[JAVA] eclipse IDE 인코딩 설정하기
참고한 블로그 - UTF-8 인코딩 설정: https://suzxc2468.tistory.com/174 이클립스(Eclipse) 한글 깨짐 - "UTF-8" 인코딩 설정 개념 인코딩이라는 개념과 친하지 않은 뉴비들을 위한 아주 간략한 설명을 하자면... 어딘가에서 소스를 가져와서 이클립스에 갖다 붙혀봤더니, 한글이 깨져서 나와요. or HTML, JSP에서 작성 된 한 suzxc2468.tistory.com - 콘솔 출력에서 MS949 인코딩 설정 https://error-nono.tistory.com/entry/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%EC%BD%98%EC%86%94-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2..
[C++] int와 string 사이 형변환 방법
참고한 블로그 : https://www.delftstack.com/ko/howto/cpp/how-to-convert-int-to-string-in-cpp/ C++에서 Int를 문자열로 변환하는 방법 이 기사에서는 C++에서 정수를 문자열로 변환하는 방법을 보여줍니다. www.delftstack.com https://godog.tistory.com/entry/C-string-to-int-int-to-string-%ED%98%95%EB%B3%80%ED%99%98-%ED%95%98%EA%B8%B0 C++ string to int, int to string 형변환 하기 C++ string to int, int to string 형변환 하기 , string 문자열에서 숫자만 선택해 형변환 int stoi (con..
[Java] Java vscode 개발 환경 설정하기
참고한 블로그 : https://offbyone.tistory.com/437 Microsoft Visual Studio Code에서 Java 개발 환경 설정하기 이전에 Visual Studio Code를 설치해보았습니다. Visual Studio Code를 설치만 했을때 할 수 있는 작업이 없더군요. 필요한 언어에 대한 확장팩을 설치해야 더 나아갈 수 있었습니다. 이번에는 Visual Studio Co offbyone.tistory.com 목차 jdk 설치 후 jdk 폴더 환경변수 추가 해주기 vscode에서 java extension pack 설치 해주기 개발 폴더 만들고 java 프로젝트 만들어주기
[Pylearn] 1222 / 딕셔너리 응용
추가 - 딕셔너리는 키-값 쌍의 형태를 지닌 자료구조이다. - 먼저 딕셔너리에서 가장 중요한 메서드 2개는 다음과 같다. - setdefault : 키-값 쌍 추가(수정은 불가) - update : 키-값 수정/추가(괄호 안에 들어가는 건 키가 문자열일때만 가능, 아닐 때는 전체 딕셔너리를 넣어야 함) # setdefault 메서드 -> 새로운 키-값 추가 x = {'a' : 10, 'b' : 20, 'c' : 30, 'd' : 40} x.setdefault('e')# 키만 추가 print(x)# {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None} x.setdefault('f', 100)# 키와 값 추가 print(x)# {'a': 10, 'b': 20, 'c': 30,..
[Pylearn] 1213 / 문자열 응용하기
- 문자열 일부 바꾸기 - s.replace('arr1', 'arr2')로 사용. word = 'python is great' word.replace('python', 'c') print(word) #c is great - 만약 문자열이 일치하지 않는 경우 -> word.replace('bython', 'c') print(word)# python is great => 바꿀 문자를 찾지 못하고 그대로 출력된다. 응용 => 문자열 A가 있을시에 A를 문자열 B로 바꾸는 프로그램을 만들 때 A가 있는지부터 검사할 필요 없이 바로. replace('A', 'B') 하면 된다. - 문자 바꾸기 - translate(str.maketrans('aeiou', '12345'))으로 사용. - table = str.ma..
[Python] 1210 / file 입출력, 클래스 #1
파일 입출력을 하기 위해서는 여러 방법이 있다. 먼저, 가장 기본적인 open()을 이용한 방법이 있다. (open('이름', '용도')로 사용) 같은 폴더 내에 'hello.txt'파일을 만든 후, 그 파일에 'hello, world!'를 쓰는 프로그램은 다음과 같다. file = open('hello.txt', 'w') file.write('hello, world!') file.close() 이때 file.close()를 해줘야 메모리가 낭비되지 않고, 사소한 실수가 중대한 피해로 이어지는 걸 막을 수 있다. 'w'의 의미는 파일을 쓰는 용도로 열겠다는 뜻이다. write()를 하게 되면 파일에 기존에 있던 내용은 삭제되고, 새로운 내용이 적힌다. 이제 파일의 내용을 읽는 법을 알아보자. file ..
[Python] 1205 List Comprehension(리스트 표현식) 및 문자열, 백준 2869번
python 리스트 comprehension 표현식 arr = [i for i in range(10)] -> [0 1, 2, 3, 4, 5, 6, 7, 8, 9] 생성. 이때 range대신 시퀀스 들어가도 가능. 뒤에 if문 붙여서 [i for i in range(10) if i % 2 == 0] -> [0, 2, 4, 6, 8] 생성. for문 여러 개 중첩 가능. 예) 2단 ~ 9단 리스트 만들 시 [i * j for i in range(2, 10) for j in range(1, 10)] 하면 i가 2부터 9까지 반복될 때 각각 j 가 1부터 9까지 반복됨. 인셉션처럼 갈수록 반복문이 깊어지는 것. 문자열 응용하기 .replace() '문자열'. replace('원래 문자열', '나중 문자열') -..
[Python] 1202
몰랐던 기능들 ord() -> 문자 => 아스키코드 변환 chrd() -> 아스키코드 => 문자 변환 .isalpha() -> 알파벳으로만 구성되었는지 확인 find() 함수 -> index()와 동일한 기능. 대신 값이 없으면 -1을 반환하고(index는 ValueError뜸), index와는 다르게 리스트, 튜플에서 사용 불가. 문자열에서만 사용가능함. (https://ooyoung.tistory.com/78 참고함) 주의할 점들 input = sys.stdin.readline().split() -> .split() 넣어줘야 뒤에 개행 문자 사라짐(안하고 str쓰려하면 개행문자 오류남) 대신 sys.stdin.readline()은 무조건 리스트 안에 문자열이 들어감. reversed()는 기존 변수는..
[Python] 1201 공부한 점들
몰랐던 점들 arr.append(a) -> 가장 많이 쓰는 방법, 리스트에 a요소 하나를 추가할 때 사용. arr.extend(arr_1) -> arr에 다른 리스트 추가함. 리스트에 리스트를 추가할 때 사용. arr.insert(a, b) ->arr의 a 인덱스에 b를 추가함. 리스트 중간에 요소 하나를 추가할 때 사용. ** 또는 arr[3:3] = [1, ..., 10]과 같이 슬라이싱을 이용해 리스트 중간에 리스트를 끼워 넣을 수 있음. 인덱스를 조작해 일부분을 대체하는 것도 가능. *** arr[len(arr):] = [1, ..., 10] -> extend와 동일한 기능. -> 슬라이싱을 이용해 다양한 작업 가능. 기타 다양한 기능들 arr.count(a) -> 리스트 안에 요소가 얼마나 들어..