• Home
  • About
    • Hooni photo

      Hooni

      Hooni coding

    • Learn More
    • Email
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

모각코 7주차 목표와 회고

29 Jul 2020

Reading time ~1 minute

7주차 (07월 29일)

목표

  • 원래 웹프로그래밍 하는 날이지만 강의를 다 들어서 오늘 알고리즘 공부를 하고, 8주차에 웹프로그래밍 공부를 할 예정
  • <트리, BFS/DFS> 자료구조 복습
  • 복습 후 <트리, BFS/DFS> 알고리즘 문제 2~3개 풀기(난이도 : 실버4 이상)

회고

  • 알고리즘 문제 : 백준 7576번 (난이도 : 실버1)

image

해결 방법 : 익은 토마토를 큐에 넣은 후에 하나씩 빼서 상하좌우의 토마토를 익힌 후 익힌 토마토를 큐에 넣는다.

코드일부

int[] x = {-1, 1, 0, 0};
int[] y = {0, 0, -1, 1};
int finalday = 0;

	while(!q.isEmpty()) {
		Tomato t = q.poll();
		for(int i = 0; i < 4; i++) {
			int newx = t.x + x[i];
			int newy = t.y + y[i];
			if(newx >= 0 && newx < n && newy >= 0 && newy < m && 			visit[newx][newy] == false) {
				q.add(new Tomato(newx, newy, t.day + 1));
				tomato[newx][newy] = 1;
				visit[newx][newy] = true;
				}
			}
		if(finalday < t.day) {
			finalday = t.day;
		}
	}
  • 알고리즘 문제 : 백준 2178번 (난이도 : 실버1)

image

해결 방법 : 위의 토마토 문제와 마찬가지로 시작점을 큐에 넣은 후에 하나씩 빼서 갈 수 있는 길일 경우 몇번만에 갈 수 있는지를 길에 저장하고 큐에 넣는다. 도착점의 저장되어 있는 값을 출력한다.

코드일부

int[] x = {-1, 1, 0, 0};
int[] y = {0, 0, -1, 1};
while(!q.isEmpty()) {
		Point p = q.poll();
		for(int i = 0; i < 4; i++) {
			int newx = p.x + x[i];
			int newy = p.y + y[i];
            
			if(newx >= 0 && newx < n && newy >= 0 && newy < m && 		visit[newx][newy] == false && maze[newx][newy] == 1) {
				q.add(new Point(newx, newy));
				visit[newx][newy] = true;
				maze[newx][newy] = maze[p.x][p.y] + 1;
			}
		}
	}
System.out.println(maze[n-1][m-1]);
  • 알고리즘 문제 : 백준 1068번 (난이도 : 실버1)

image

모각코 시간안에 풀지 못해서 다음 모각코 전까지 풀어와야겠다.

  • 다음 마지막 모각코 때 웹프로그래밍 공부 할 것을 찾아와야겠다.


Share Tweet +1