전체 글 썸네일형 리스트형 1157번 1157번 - 단어 공부 로직은 1.단어 갯수 세기2.max 값 찾기3.max 값 여러개인지 찾기4.max 값 출력 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include#includeusing namespace std; int alpha[26];int main(){ string s; cin >> s; for (int i = 0; i = 'a' && s[i] = 'A' && s[i] 더보기 1316번 1316번 - 그룹 단어 체커 다양한 방법으로 풀 수 있었는데 , map 을 연습하기 위해서 풀어보았다. 조건은 간단하게 처음보는 단어면 map을 체크해주고, 처음 보지 않는 단어일 경우, 이전 단어와 같은지 여부만 파악해서 ans 를 늘려가면 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142#include#include#includeusing namespace std; int main(){ int n,ans=0; cin>>n; while(n--) { string tmp; bool chk=true; map m; cin>>tmp; for(int i=0;i 더보기 1327번 1327번 - 소트 게임 BFS로 문제를 풀었다, 예전에 3x3 짜리 비트마스크 문제랑 유사하다고 느껴졌다. N의 값이 작기도 하고, int 형으로 구하기 귀찮아서 string 과 map 을 이용해서 문제를 풀었다. map 을 평소 BFS에서 dist 배열과 visited 배열을 섞은 것처럼 사용하였다. 목표값과 시작값을 정해놓고 BFS를 돌리면서 목표값이 나오면 while 문을 빠져나오도록 했다 또 change 함수에서는 특정문자와, 특정 위치를 인자로 받고, 그 부분만을 reverse 해서 string 값을 반환하도록 만들었다. 그리고 만약 값이 존재하지 않는다면 -1을 출력하도록 하였다. 비트 마스크로 푸는 방법을 알아봐야 겠다. 12345678910111213141516171819202122232.. 더보기 2018-02-15 SPFA 벨만포드 알고리즘에 약간 변형을 줘서 속도향상을 시킨 알고리즘. 기본 골격은 같으나, 벨만포드에서는 모든 간선들을 확인해야 하는 반면, SPFA는 가장 겉의 for문을 while 문으로 바꾸고, Queue 를 통해서 값이 변경된 정점을 집어넣어 변경된 간선만을 확인하게 된다. 즉, 값의 변화가 이루어지면 inQueue 배열을 true 로 바꾸어주고, pop 할때는 inQueue 배열을 false 로 해준다. dist 변화는 계속 시켜주되, queue에는 한번만 들어가게 만든다. 그렇다면 벨만포드는 V번 검사를 통해 음수사이클을 확인하는데, SPFA는 어떻게 확인할까? ---> 이 부분은 참고 자료에 올려놓음. LCA ( longest common ancestor) 최소 공통 조상을 트리에서 찾는.. 더보기 SPFA 에서 음수사이클 확인 http://jason9319.tistory.com/302 감사합니다. 잘못된점 발견 1234567891011if (!v[next.first]) { cycle[next.first]++; if (cycle[next.first] == n) { puts("-1"); return 0; } v[next.first] = 1; qu.push(next.first)}Colored by Color Scriptercs 이렇게 n 체크가 안쪽에 들어와야한다. 더보기 11000번 11000번 - 강의실 배정 처음에 우선순위큐를 쓰는게 좋다는 생각이 들었고, sort 를 하고 시간변수를 선언하는 로직으로 풀면 될 것이라고 생각했다. 그래서 처음에 while문과 for문을 쓰고 time 이란 변수를 1씩 증가시키면서 모든 시간을 체크했는데, 문제에서 시간 제한이 10^9이므로 당연히 시간초과가 발생했다. 그러고 나서는 시간을 1씩 증가시키지 않고, 가장 빨리 시작하는 강의로 넘어가면서 했는데도 시간초과가 발생했다. while 문과 for문을 써서 시간초과가 발생할 수 밖에 없는 구조였다. 한참을 고민하닥 갓들의 코드를 참고했다... 하지만 생각해보면 while문을 쓰는 이유가, 시간을 앞에서 부터 오름차순으로 증가시키기 위함이었다. 그런데 이미 나는 sort 를 해놓았기 때문에, 따.. 더보기 1152번 1152번 - 단어의 개수 string 변수를 cin으로 받게 되면 공백이 입력이 되지 않는 다는 것을 알았다. string 변수를 공백까지 포함해서 입력받기 위해서는 getline 함수를 써야한다는 점 을 배웠다. 단어가 나타날 때 마다 숫자를 체크해주면 된다. 123456789101112131415161718192021222324252627282930#include#includeusing namespace std; int main(){ string s; int ans = 0, chk = 0; getline(cin, s); for (int i = 0; i= 'a' && s[i] = 'A' && s[i] 더보기 3671번 3671번 - 산업 스파이의 편지 일단 숫자가 최대 7자리 이기 때문에 재귀를 통해서 풀 수 있을 거라고 생각했다. 또한 소수를 구하는 방식은 에라토스테네스의 체보다 그냥 그때 마다 구해서 문제를 풀었다. 0을 처리하기가 귀찮아서 string 으로 수를 만든 후 stoi 함수를 써서 문제를 풀었다. 각자 선택할지 안할지도 정해야 하고, 또한 앞 뒤 순서도 정해야 하기 때문에 check 값을 통한 백트래킹과 for문을 이용해서 재귀를 구현했다. 근데 예외처리 할 부분이 많아서 여러번 손을 봐야했고.. 약간 시간이 오래 걸리는 것 같다 더 정확하고 깔끔한 풀이를 위한 다른 사람들 코드를 좀 답습해야겠다. 1234567891011121314151617181920212223242526272829303132333.. 더보기 이전 1 ··· 28 29 30 31 32 33 34 ··· 61 다음