List

리스트를 사용하기 위해 사용하는 태그

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <ol>
      <li>html</li>
      <li>css</li>
      <li>JavaScript</li>
  </body>
</html>




만약 두가지 리스트가 있으면 그 두 가지를 구분하기 위한 것이 필요

=> 각각의 태그드를 묶어주는 태그 사용 <ul>

ul의 유래 == unordered list

반대로ol == ordered list

ol을 통해 순서가 관계있는 list 라는 것을 브라우저에게 알려주고,

ul을 통해 순서가 상관없는 list 라는 것을 브라우저에게 알려준다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <ol>
      <ol>    
        <li>html</li>
        <li>css</li>
        <li>JavaScript</li>
      </ol>
      <ul>
        <li>가나다</li>
        <li>가나라</li>
      </ul>
  </body>
</html>




<head>의 의미

문서를 설명하는 정보들을 감싸고 있는 태그

<body>의 의미

웹페이지 에서 본문에 해당하는 의미. 

<meta charset="UTF-8" />

쓰지 않으면 한글이 깨져 보일 수 있다

<title>생활코딩</title>

원래 연 파일의 제목이 html의 제목으로 나왔는데 이것은 제목을 설정해준다.

<html> 태그

태그 안에 있는 것들이 html문서이다. 라는 것을 브라우저에게 알려주는 역할.

<!DOCTYPE html>

DOC 타입. 이 html 문서가 어떤 표준안에 따라서 작성된 것인지를 웹 브라우저가 이해할 수 있도록 작성된 것.

Tag Reference

태그 사전.






'웹 프로그래밍' 카테고리의 다른 글

CSS 이론1  (0) 2017.12.16
개발도구 - 아톰  (0) 2017.12.16
HTML실습  (0) 2017.12.14
HTML 이론 - HTML의 기본문법과 속성  (0) 2017.12.12
수업소개 ~ 서버와 클라이언트  (0) 2017.12.04

재귀 부분에서 dfs(nx,ny,cnt+1)을 

++cnt로 했는데 틀렸습니다 가 나왔다. 차이는 나중에 생각해 봐야겠다. 

새로 배운 것

1. 플러드 필에서 이동할 때 썼던 int dx,dy 배열을 한번에 2차원 배열로 사용하는 방법

2. 앞에것 을 방문했는지를 확인하는 데에 원래 배열을 만들어서 이전에 방문했던 지점을 

저장하고, for문을 이용해서 그 것을 매번 다음 nx,ny를 방문할 때마다 반복해야 했다. 

하지만 이 코드로 bool ch에 배열 number로 저장해서 한번에 찾을 수 있다는 걸 알았다. 

3. 백트래킹에 대해 아주 많이 생각해 보게 되었다. 



#include <iostream>
using namespace std;
int r, c;
char a[22][22];
bool ch[26];
int dd[][2] = { { 1,0 },{ -1,0 },{ 0,1 },{ 0,-1 } };
int ans = 0;
void dfs(int x, int y, int cnt) {
       if (cnt > ans) ans = cnt;
       for (int k = 0; k < 4; ++k) {
               int nx = x + dd[k][0];
               int ny = y + dd[k][1];
               if (0 <= nx&&nx < r && 0 <= ny&&ny < c) {
                      if (ch[a[nx][ny] - 'A'] == false) {
                              ch[a[nx][ny] - 'A'] = true;
                              dfs(nx, ny, cnt+1);
                              ch[a[nx][ny] - 'A'] = false;
                      }
               }
       }
}
int main() {
       cin >> r >> c;
       for (int i = 0; i < r; ++i) {
               cin >> a[i];
       }
       ch[a[0][0] - 'A'] = true;
       dfs(0, 0, 1);
       cout << ans;
       return 0;
       
}

'알고리즘' 카테고리의 다른 글

[DP] 백준 동전 2 2294  (0) 2018.04.02
[DP] 백준 2011 암호코드  (0) 2018.01.02
[그래프] 백준 5567 결혼식  (0) 2017.12.13
[EAZY] 백준 1065번 한수  (0) 2017.08.17
[EAZY] 백준 4673 셀프넘버  (0) 2017.08.15
트리

사이클이 없는 그래프

정점의 개수 V

간선의 개수 V-1



루트 있는 트리


부모(Parent)


그래프가 있으면 루트에 가까운 것이 부모

루트는 부모가 없다. 


자식(Children)


​부모 아래에 달려있는 노드

가장 아래층에 있는 노드 => 단말 정점 (Terminal Node) (Leaf Node)


형제(Sibiling)

​같은 부모를 가지면 형제


깊이(Depth)


​루트에서 부터의 거리 (루트의 깊이를 0으로 하나 1로 하나의 차이가 있다)



높이(Height)

깊이 중에서 가장 큰 값

조상, 자손(Ancestor, Descendent)

p->q로 갈 수 있을 때(형제 위치로는 갈 수 없음)
p가 q보다 루트에 가까우면
p는 q의 조상
q는 p의 자손


이진 트리(Binary Tree)

자식을 최대 2개만 가지고 있는 트리




트리의 표현

1. 그래프와 같은 방식으로 저장할 수 있다.

2. 트리의 모든 노드는 루트를 제외하고 모두 부모를 가지므로 부모만 저장하는 방식

2.의 장점 => 부모를 찾는데 O(1)만큼 걸린다. 

2의 단점 => 자식을 찾는데 O(V)만큼 걸린다. 

3. 이진트리의 경우 배열로 표현할 수 있다. 

부모를 x로 자식을 2x, 2x+1로 설정해서 배열로 저장

3의 단점 => 한쪽으로만 연결된 트리를 예로 들 경우 8개를 저장하기 위해 256개의 저장공간이 필요함

이진 트리가 꽉 차는 방식으로 차도록 해결할 수 있는 문제는 이런 방식으로 사용하면 아주 좋음 



+ Recent posts