반응형

전체 글 221

[ Pandas ] 판다스 자료구조 (시리즈, 데이터 프레임)

DataFrame객체.loc[행인덱스, 열이름] DataFrame객체.iloc[행번호, 열번호] 데이터는 형태나 속성이 매우 다양하다. 서로 다른 형식을 갖고 있는 데이터들을 컴퓨터가 이해할 수 있도록 하기 위해서는 구조를 통합해줘야한다. 이를 위해 판다스는 1차원 배열인 시리즈와 2차원 배열인 데이터 프레임이라는 구조화된 데이터 형식을 제공한다 판다스의 1차적인 목적은 서로 다른 데이터 형식을 공통의 포멧으로 만드는 것이다. 1. 시리즈 시리즈는 데이터가 순차적으로 나열된 1차원 배열의 형태를 갖는다. 인덱스와 데이터 값은 일대일 대응이된다. 파이썬의 딕셔너리와 비슷하다고 볼 수 있다. 1.1. 딕셔너리를 시리즈로 변환 pandas.Series(딕셔너리) #딕셔너리->파이썬 1.2 인덱스와 배열 ser..

[ C++ ] #4949 균형잡힌 세상

괄호문제는 스택을 쓰는 대표적인 문제이다! 문자열을 하나씩 읽어서 괄호만 스택에서 관리해야겠다. 나름 생각한대로 알고리즘을 짰는데,,, 시간초과가 났다. 먼저 간단하게 할 수 있는 것들부터 했다. 1. ios::sync_with_stdio(0); 2. cin.tie(0); 3. endl안쓰기 하지만 해결이 안됐고,, 결국 답지를 보면서 원인을 찾아봤다. 시간초과가 안나기 시작한건 char배열으로 getline을 받았는데 string으로 getline으로 받았다는 것과 이 변화에 따라서 for each문으로 바꾼것!이다. 그랬더니 틀렸습니다! 가 떴고 일단 시간초과가 안난것이 기뻤다 ㅎㅎ 그다음에 여러가지 반례를 찾아보고 열리는 괄호만 있을 때 안된다는 것을 발견했다! 그것만 고쳤더니 맞았습니다!를 만났다..

BOJ/[ BOJ ] C++ 2023.01.06

[ 알고리즘 ] BFS

1. 알고리즘 설명 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘 시작하는 칸을 큐에 넣고 방문했다는 표시를 남김 큐에서 맨 앞의 원소를 꺼내어 그 칸에 상하좌우로 인접한 칸에 대해 3번을 진행 해당칸을 이전에 방문했다면 아무것도 하지 않고, 처음으로 방문했다면 방문했다는 표시를 남기고 해당 칸을 큐에 삽입 큐가 빌 때까지 2번을 반복 시간복잡도는 모든 칸이 큐에 한번씩 들어가므로 칸이 N개일 때 O(N)이된다. 2. 코드 BFS는 코딩테스트에서 굉장히 중요한 부분이므로 꼭 잘 숙지해야함! #include using namespace std; #define X first #define Y second // pair에서 first, second를 줄여서 쓰기 위해서 사용 int bo..

공부/알고리즘 2023.01.05

[ C++ ] #1021 회전하는 큐

앞뒤로 넣기 간단한 deque를 이용하면 해결할 수 있을 것 같다. 1번도 연산자의 일부라고 생각해서 1번을 사용할 수 있으면 1번을 쓰고 1번을 못쓰는경우에만 2번3번을 써야한다고 생각해서 실버4치고 복잡하다고 생각하고있었다.. 아직 문제를 많이 안풀어봐서 문제해석능력이 부족한것같다. 찾을 숫자는 num이라는 배열에 정리하였고 순서판의 숫자들은 deque에 넣어관리하였다. 분명 간단하다고 생각했는데... 자꾸 실패해서 보니까 왼쪽이동 오른쪽이동의 규칙이 명확하지 않았다. 그래서 찾아야하는 숫자의 인덱스와 덱의 사이즈의 절반을 비교하여 오른쪽으로 이동할지 왼쪽으로 이동할지 결정하였다. 그랬더니 바로 원하는 결과가 나왔다! #include #include using namespace std; int num..

BOJ/[ BOJ ] C++ 2023.01.04

[ 알고리즘 ] 스택의 활용(수식괄호의 쌍)

주어진 괄호 문자열이 올바른지 판단하는 것! 어떻게 판단해야할까? 괄호쌍을 찾아야함! 연결리스트로도 구현가능하지만 스택으로도 가능! 여는 괄호면 스택에 넣고 닫는괄호는 스택의 맨 뒤에있는 괄호와 짝 짓기! 짝이 안맞거나, 여는괄호와 닫는괄호의 개수가 맞지않을때 틀린 수식이라는것을 알아 챌 수 있음

공부/알고리즘 2023.01.01

[ C++ ] #10773 제로

입력되는 숫자를 차곡차곡 스택에 넣다가 0이 입력되면 스택에서 하나를 빼는 방식으로 코드를 짜면 쉽게 해결이 될 것 같다. 마지막에는 스택에 있는 값을 모두 더하면 출력값도 쉽게 구할 수 있을 것 같다. #include #include using namespace std; int main() { int K,a,sum=0; cin >> K; stack s; for (int i = 0; i > a; if (a == 0) { s.pop(); } else { s.push(a); } } a = s.size(); for (int i = 0; i < a; i++) { sum += s.top(); s.pop(); } cout

BOJ/[ BOJ ] C++ 2022.12.24

[ C++ ] #10828 스택

어려운문제는 아니다! 하지만 출력을 예제처럼 깔끔하게 하려고 저장해놨다가 출력했더니 계속 틀렸다. 질의응답을 봤더니 다들 그냥 바로 출력했길래 나도 그렇게 했더니 맞았다..ㅎㅎ #include #include #include using namespace std; int main() { int n,b; string a; stack s; int* result = new int[n]; cin >> n; for (int i = 0; i > a; if (a == "push") { cin >> b; s.push(b); }else if(a == "top") { if (s.empty()) cout

BOJ/[ BOJ ] C++ 2022.12.21

[ 알고리즘 ] 스택 , STL stack

스택이란 선입후출의 자료구조이다. 원소의 추가,제거,제일상단의 원소확인이 O(1)에 가능하지만 다른 위치의 원소확인과 변경이 원칙적으로 불가능하다. 하지만 배열과 연결리스트로 스택을 구현한다면 가능하다. 1. 배열로 스택 구현하기 cosnt in MX=1000005; int dat[MX]; int pos=0 //위치 void push(int x){ dat[pos++]=x; } void pop(){ pos--; } void top(){ dat[pos-1]; } 2. STL #include using namespace std; int main(void) { stack S; S.push(10); // 10 S.push(20); // 10 20 S.push(30); // 10 20 30 cout

공부/알고리즘 2022.12.21
반응형